华为机试题 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进制转换的主要内容,如果未能解决你的问题,请参考以下文章

华为机试题分析 5 进制转换

华为机试题 HJ33整数与IP地址间的转换

华为机试题 HJ33整数与IP地址间的转换

牛客刷题HJ5 进制转换

Java解 | #HJ5十六进制转换#

华为机试题分析-C/C++知识点分类总结