问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
import java.util.Scanner;
public class Main {
public static void main(String[] arg){
Scanner scanner=new Scanner(System.in);
String s=scanner.next();
int x=1;//记录现在处理到十六进制的第几位;
long sum=0;//记录总的数值
int length=s.length();
while(length>0){
int value= s.charAt(length-1)-'0';
switch (s.charAt(length-1)){
case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':
sum+=value*Math.pow(16,x-1);
break;
case 'A':
sum+=10*Math.pow(16,x-1);
break;
case 'B':
sum+=11*Math.pow(16,x-1);
break;
case 'C':
sum+=12*Math.pow(16,x-1);
break;
case 'D':
sum+=13*Math.pow(16,x-1);
break;
case 'E':
sum+=14*Math.pow(16,x-1);
break;
case 'F':
sum+=15*Math.pow(16,x-1);
break;
}
x++;
length--;
}
System.out.println(sum);
}
}
注意
最后结果要用long,因为最大是FFFFFFFF,int会造成溢出。