问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
注意:
这个题超过了int的范围,最后和需要用long类型.
1 import java.util.Scanner; 2 3 public class Main { 4 public static void main(String[] stgs) { 5 Scanner scanner = new Scanner(System.in); 6 String str = scanner.nextLine(); 7 char[] arr = str.toCharArray(); 8 int len = arr.length; 9 long sum = 0; 10 for (int i = 0; i < len; i++) { 11 if ((int) arr[i] - 48 > 9) { 12 if (arr[i] == 'A') 13 sum += 10 * Math.pow(16, len - i - 1); 14 else if (arr[i] == 'B') 15 sum += 11 * Math.pow(16, len - i - 1); 16 else if (arr[i] == 'C') 17 sum += 12 * Math.pow(16, len - i - 1); 18 else if (arr[i] == 'D') 19 sum += 13 * Math.pow(16, len - i - 1); 20 else if (arr[i] == 'E') 21 sum += 14 * Math.pow(16, len - i - 1); 22 else if (arr[i] == 'F') 23 sum += 15 * Math.pow(16, len - i - 1); 24 } else { 25 sum += ((int) arr[i] - 48) * Math.pow(16, len - i - 1); 26 } 27 } 28 System.out.println(sum); 29 } 30 }