题目如下:
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
这个题目相对于16进制转八进制就简单多了,直接用普通的转换方法就行,即从后到前每一位乘16的0 , 1, 2。。。。。次方。加起来即可。代码如下:
import java.util.Scanner;
/*
* 16进制转十进制
*/
public class Main{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String hex = input.next();
char[] hexCharArray = hex.toCharArray();
long sum = 0;
int index = 0;
for (int i = hexCharArray.length -1; i >= 0 ; i--) {
if (hexCharArray[i]>='0'&&hexCharArray[i]<='9') {
sum+=Math.pow(16, index) *Integer.parseInt(hexCharArray[i] + "") ;
}else{
switch (hexCharArray[i]) {
case 'A': sum+=Math.pow(16, index) * 10;
break;
case 'B': sum+=Math.pow(16, index) * 11;
break;
case 'C': sum+=Math.pow(16, index) * 12;
break;
case 'D': sum+=Math.pow(16, index) * 13;
break;
case 'E': sum+=Math.pow(16, index) * 14;
break;
case 'F': sum+=Math.pow(16, index) * 15;
break;
default:
break;
}
}
index++;
}
System.out.println(sum);
}
}