[Niu Ke] 3. Conversão de base

Niuke: Pergunta de programação do engenheiro de P&D da Huawei 3

3. Conversão hexadecimal

Escreva um programa que receba um número hexadecimal e imprima a representação decimal desse valor. Intervalo de dados: garanta o resultado em 1 ≤ n ≤ 2 31 2^{31}231 −1

Descrição de entrada:
insira uma string de valor hexadecimal.

Descrição da saída:
Emite a string decimal do valor. Diferentes grupos de casos de teste são separados por \n.

Exemplo 1
exemplo de entrada:
0xAA

Exemplo de saída:
170

responder

Ideia: Simular o método de cálculo de conversão de hexadecimal para decimal.

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();
    }
}

Supongo que te gusta

Origin blog.csdn.net/qq_44033208/article/details/131873396
Recomendado
Clasificación