时间限制:1.0s 内存限制:512.0MB
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
注意:数据范围,中间的2的次方可能超过 int
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); String[] two = { "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111", }; String str = cin.nextLine(); int len = str.length(); long ans = 0; //转为二进制 // System.out.println(str + "str"); StringBuilder twostr = new StringBuilder(); for(int i = 0; i < len; i++) { if(str.charAt(i) < 'A') { twostr.append(two[str.charAt(i) - '0']); } else { twostr.append(two[str.charAt(i) - 'A' + 10]); } } // System.out.println(twostr); //转为十进制 len = twostr.length(); long t = 1; ans = 0; for(int i = len - 1; i >= 0; i--) { ans += (twostr.charAt(i) - '0') * t; t = t * 2; } System.out.println(ans); } }