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