问题描述
用户输入一个十六进制的字符串,然后把十六进制转化为十进制。
如:
用户输入:ABC123
结果:11256099
方法一:
import java.util.Scanner;
public class 十六进制转为10进制 {
/**
* 公式:十六进制:1234
* 则转为十进制为:1*16^3 + 2*16^2 + 3*16^1 + 4*16^0 =
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
String num = sc.next();
int arr[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int x = 0;
int arr1[]=new int[num.length()];
for (int i = 0; i <num.length(); i++) {
//ascll码判断,然后把字符传化为整形数字
if (num.charAt(i)>=48&&num.charAt(i)<=57) {
arr1[x]=arr[num.charAt(i)-48];
x++;
}
else {
arr1[x]=arr[num.charAt(i)-55];
x++;
}
}
int sum = 0; //累加最后的结果
int s = 0; //累乘
int j = 0; //用于数组的下标取值
do {
for (int i = 0; i <=j; i++) {
if (i==0) {
s=1;
}
else {
s*=16;
}
}
sum+=arr1[arr1.length-j-1]*s;
j++;
} while (j<arr1.length);
System.out.println(sum);
}
}
//方法二(系统方法):
System.out.println(Integer.parseInt(num,16));