【牛客】3.进制转换

牛客:华为研发工程师编程题 第三题

3.进制转换

写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。数据范围:保证结果在 1 ≤ n ≤ 2 31 2^{31} 231−1

输入描述:
输入一个十六进制的数值字符串。

输出描述:
输出该数值的十进制字符串。不同组的测试用例用\n隔开。

示例1
输入例子:
0xAA

输出例子:
170

题解

思路:模拟16进制转10进制计算方法。

import java.util.*;

public class Main {
    
    
    public static int decimal(char c) {
    
    
        //16进制保存为数组
        char[] n = {
    
    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};

        for (int i = 0; i < n.length; i++) {
    
    
            if (Character.toUpperCase(c) == n[i])
                return i;
        }
        return 0;
    }

    public static void main(String[] args) {
    
    
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
    
    
            String str = in.nextLine();
            String[] s1 = str.split("0x");
            //System.out.println(s1[1]);

            char[] c1 = s1[1].toCharArray();
            int len = s1[1].length();

            int sum = 0;
            for (int i = 0; i < len; i++) {
    
    
                int n = decimal(c1[i]);
                System.out.println(n);
                sum += n * (int) Math.pow(16, len - 1 - i);//乘以16的几次幂
            }
            //System.out.println(sum);
        }
        in.close();
    }
}

猜你喜欢

转载自blog.csdn.net/qq_44033208/article/details/131873396