链接: 进制转换
来源:牛客网
问题描述:
解题思路:
- 首先我们应该弄清楚题上输入的0xA是什么意思:0x就代表后边的数字是个16进制的数字。
- 其次我们应该知道一些有关16进制的知识:十六进制(简写为hex或下标16)在数学中是一种逢16进1的进位制。一般用数字0到9和字母A到F(或a-f)表示,其中:A-F表示10~15,这些称作十六进制数字。
- 清楚这些后我们还需要弄懂16进制与10进制怎么进行转换,比如:
- 相信弄清楚上边这些做这个题就会很轻松了。
步骤一:我们首先用一个HashMap来建立十六进制中的每个字节与他们对应的10进制数字的关系。
步骤二:然后我们将输入的字符串除去前两位后面的每个字节都提取出来用map知道他们对应的十进制数字,最后带入计算输出即可。
解题代码:
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main1 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
//步骤一
Map<Character,Integer> map=new HashMap<>();
String s=sc.nextLine();
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);
int number=0;
int power=s.length()-3;
//步骤二
for(int i=2;i<s.length();i++){
char c=s.charAt(i);
if(map.containsKey(c)){
int num=map.get(c);
number+= (int) (num*Math.pow(16,power));
power--;
}
}
System.out.println(number);
}
}
}