十六进制转十进制
方法一:
/*
*问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用英文字母A、B、C、D、E、F或者a,b,c,d,e,f表示。
*样例输入
FFFF
*样例输出
65535
*/
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
System.out.print("输入十六进制数:");
Scanner sc = new Scanner(System.in);
String str = sc.next();
char[] a = str.toCharArray();
int[] b = new int[a.length];
int sum = 0;
for (int i = 0; i < a.length; i++) {
if ((a[i] >= 'a') && (a[i] <= 'z')) {
b[i] = a[i] - 'a' + 10;
} else if ((a[i] >= 'A') && (a[i] <= 'Z')) {
b[i] = a[i] - 'A' + 10;
} else
b[i] = a[i] - '0';
}
for (int i = 0; i < b.length; i++) {
sum+= b[b.length - i - 1] * (int) (Math.pow(16, i));
}
System.out.println("" + sum);
}
}
输出结果:
输入十六进制数:ffff
转成十进制为:65535
方法二:
利用Java对String对象的强制转换函数
详情可查阅Java的API---------->java在线API
1、对字符串参数的解析就是按照这个进制标准进行转化成10进制的数值。
比如 :
System.out.println(Integer.parseInt("ffff", 16));
System.out.println(Integer.parseInt("123",10));
输出为:
65535
123
十进制转十六进制
/*
* 先输入一个整型数字tr,判断其是否为0,若为0,则其16进制同样为0;
* 若n不为0,则对16取余,并转换成16进制相应的字符;
* n=n/16,重复过程2、3,用字符数组s依次保存每一位;
* 输出的时候逆序输出即可
*/
import java.util.Scanner;
public class Demo2 {
public static void main(String[] args) {
System.out.print("请输入十进制数:");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.println("转成十六进制为:" + intTo(n));
}
public static String intTo(int n) {
StringBuffer str = new StringBuffer();
char[] b = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
while (n != 0) {
str = str.append(b[n % 16]);
n = n / 16;
}
String str1 = str.reverse().toString();
return str1;
}
}
输出结果:
请输入十进制数:65535
转成十六进制为:FFFF
函数说明:
十进制转二进制
/*利用字符串的并置
int类型数据加上字符串类型数据自动转换为字符串*/
import java.util.Scanner;
public class Demo3 {
public static void main(String[] args) {
System.out.print("输入十进制数:");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String str = "";
while (n != 0) {
str = n % 2 + str;
n = n / 2;
}
System.out.println("转换为二进制数:" + str);
}
}
输出结果:
输入十进制数:10
转换为二进制数:1010
二进制转十进制
/* 原理和十六进制转十进制是一样的*/
import java.util.Scanner;
public class Demo4 {
public static void main(String[] args) {
System.out.print("输入二进制数:");
Scanner sc = new Scanner(System.in);
String str = sc.next();
char a[] = str.toCharArray();
int b[] = new int[a.length];
int sum = 0;
for (int i = 0; i < a.length; i++) {
if ((a[i] >= '0') && (a[i] <= '1')) {
b[i] = a[i] - '0';
} else {
System.out.println("不是二进制数!");
}
}
for (int i = 0; i < a.length; i++) {
sum += b[a.length - 1 - i] * (int) Math.pow(2, i);
}
System.out.println("转换为十进制为:" + sum);
}
}
输出结果:
输入二进制数:1010
转换为十进制为:10