问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
参考:https://blog.csdn.net/weixin_43728574/article/details/95197494
思路:java的Integer的长度是4个字节,换算16进制最长长度为FFFF FFFF,所以使用BigInteger,大数是不能直接运算,只能使用自己的函数
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String string = scanner.next();
Integer weight=0;
BigInteger sum= new BigInteger("0");
for(int i=string.length()-1;i>=0;i--){
char c = string.charAt(i);
if(c>='0'&&c<='9'){
sum=sum.add(BigInteger.valueOf(Integer.parseInt(c + ""))
.multiply(BigInteger.valueOf((int) Math.pow(16, weight))));
}
else {
sum=sum.add(BigInteger.valueOf(c-55).multiply(BigInteger.valueOf((int) Math.pow(16, weight))));
}
weight++;
}
System.out.println(sum);
}
}
*操作
Long.parseLong(String s,int radix);
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String next = scanner.next();
System.out.println(Long.parseLong(next,16));
}
}