一、题目
二、十六进制转十进制规则
十六进制:0~9这十个数字+10-15用A-F表示。字母不区分大小写。
十六进制用0x开头(数字0),2AF5可以用0x2AF5表示
0xAA转换成10进制=10*16^0+10*16^1=170
三、代码
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str=sc.nextLine();
str=str.substring(2); //去掉开头的0x
char[] c_arr=str.toCharArray();
double res=0;
int len=c_arr.length-1;
for(int i=0;i<=len;i++){
if(c_arr[i]=='A') res=res+10*Math.pow(16,len-i);
else if(c_arr[i]=='B' ||c_arr[i]=='b') {res=res+11*Math.pow(16,len-i);}
else if(c_arr[i]=='C' ||c_arr[i]=='c') {res=res+12*Math.pow(16,len-i);}
else if(c_arr[i]=='D' ||c_arr[i]=='d') {res=res+13*Math.pow(16,len-i);}
else if(c_arr[i]=='E' ||c_arr[i]=='e') {res=res+14*Math.pow(16,len-i);}
else if(c_arr[i]=='F' ||c_arr[i]=='f') {res=res+15*Math.pow(16,len-i);}
else {res=res+Double.parseDouble(""+c_arr[i])*Math.pow(16,len-i);}
}
System.out.println((int)res);
}
}