华为机试题 HJ5进制转换
Posted yangbocsu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为机试题 HJ5进制转换相关的知识,希望对你有一定的参考价值。
HJ5 进制转换
描述
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
数据范围:保证结果在
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。不同组的测试用例用隔开。
参考代码1
主要思路:从尾部开始遍历16进制,然后查k-v值,然后计算;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.HashMap;
public class Main
public static void main(String[] args) throws IOException
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
HashMap<Character,Integer> hashMap = new HashMap();
hashMap.put('0',0);
hashMap.put('1',1);
hashMap.put('2',2);
hashMap.put('3',3);
hashMap.put('4',4);
hashMap.put('5',5);
hashMap.put('6',6);
hashMap.put('7',7);
hashMap.put('8',8);
hashMap.put('9',9);
hashMap.put('A',10);
hashMap.put('B',11);
hashMap.put('C',12);
hashMap.put('D',13);
hashMap.put('E',14);
hashMap.put('F',15);
while((str = br.readLine()) != null)
int len = str.length();
int res = 0;
int cnt = 0;
for(int i = len - 1; i > 1; i--)
res += hashMap.get(str.charAt(i)) * Math.pow(16,cnt++);
System.out.print(res);
参考代码2
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.HashMap;
public class Main
public static void main(String[] args) throws IOException
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
while((str = br.readLine()) != null)
int len = str.length();
int res = 0;
int cnt = 0;
for(int i = len - 1; i > 1; i--)
int tmp = (int)(str.charAt(i));// 将字符转换为ASCII码
// 这十六进制有 ABCDEF
if(tmp >= 'A')
tmp = tmp - 'A' + 10;
// 数字:0-9
else
tmp = tmp - '0';
// 累加。。
res += tmp * Math.pow(16,cnt++);
System.out.print(res);
以上是关于华为机试题 HJ5进制转换的主要内容,如果未能解决你的问题,请参考以下文章