从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
FFFF
65535
从最低位开始,用数学运算累加。
import java.lang.*;
import java.util.Scanner;
/**
* @Author wangyichao
* @date 2022/11/10 12:30
* @Version 1.0
* @Description
*/
public class Main{
public static String HexToDec(String n) {
double sum = 0;
// long sum = 0;
int count = 0;
for(int i = n.length()-1; i > -1; i--){
int k = 0;
if(n.charAt(i) == 'A')
k = 10;
else if(n.charAt(i) == 'B')
k = 11;
else if(n.charAt(i) == 'C')
k = 12;
else if(n.charAt(i) == 'D')
k = 13;
else if(n.charAt(i) == 'E')
k = 14;
else if(n.charAt(i) == 'F')
k = 15;
else
k = n.charAt(i) - 48;
//法一:将数据类型设置为double
sum = (sum + k * Math.pow(16,count));
//法二:将数据类型设置为long
// sum1 = (long) (sum1 + k * Math.pow(16,count));
count++;
}
//输出的时候不保留小数
String s1 = String.format("%.0f",sum);
// String s1 = String.valueOf(sum1);
return s1;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String n = sc.next();
String sum = HexToDec(n);
System.out.println(sum);
}
}