BASIC-11 十六进制转十进制
BASIC-11 十六进制转十进制
题目
问题描述
从键盘输入一个不超过 8 位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的 10~15 分别用大写的英文字母 A、B、C、D、E、F 表示。
样例输入
FFFF
样例输出
65535
题解
import java.util.Scanner;
import java.util.HashMap;
public class BASIC_11 {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
sc.close();
char[] arr = str.toCharArray();
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
map.put('0', 0);
map.put('1', 1);
map.put('2', 2);
map.put('3', 3);
map.put('4', 4);
map.put('5', 5);
map.put('6', 6);
map.put('7', 7);
map.put('8', 8);
map.put('9', 9);
map.put('A', 10);
map.put('B', 11);
map.put('C', 12);
map.put('D', 13);
map.put('E', 14);
map.put('F', 15);
long count = 0;
int o;
for (int i = 0; i < arr.length; i++) {
o = arr.length - i - 1;
count += map.get(arr[i]) * Math.pow(16, o);
}
System.out.println(count);
}
}