将十六进制数转换成十进制数 输入 第一行有一个整数T,表示共有T组数据 接下来T行,每一行为一个16进制无符号正整数,位数不超过8位,数中的a-f均为大写字母,数前没有多余的0 输出 输出共T行,每一行是一组数据的十进制表示,数字前不得有多余的0。 十进制数小于2^31
时间: 2024-09-15 11:12:48 浏览: 48
将十六进制数转换为十进制数可以通过逐位相加的方式实现,每四位一组(因为十六进制有16个基数),从最右边开始。对于每一位,我们可以使用它们对应的十进制值(A=10, B=11, C=12, D=13, E=14, F=15)来进行计算。以下是一个简单的Java程序示例:
```java
import java.util.Scanner;
public class HexToDecimal {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int T = scanner.nextInt(); // 获取测试数据组数
for (int i = 0; i < T; i++) {
String hexNumber = scanner.next(); // 读取每组十六进制数
int decimal = hexadecimalToInt(hexNumber); // 转换并打印结果
System.out.println(decimal);
}
scanner.close();
}
private static int hexadecimalToInt(String hexStr) {
int result = 0;
int power = 0;
for (int i = hexStr.length() - 1; i >= 0; i--) {
char c = hexStr.charAt(i);
if (Character.isDigit(c)) {
result += (c - '0') * Math.pow(16, power);
power *= 4; // 每四位计算一位十进制数
} else if (c >= 'A' && c <= 'F') {
result += (c - 'A' + 10) * Math.pow(16, power);
power *= 4;
} else if (c >= 'a' && c <= 'f') {
result += (c - 'a' + 10) * Math.pow(16, power);
power *= 4;
} else {
throw new IllegalArgumentException("Invalid character in the hexadecimal number");
}
}
return result;
}
}
```
这个程序首先获取输入的测试数据组数T,然后对每一组十六进制数进行处理。`hexadecimalToInt` 方法接收一个字符串,遍历每一位字符,根据其ASCII码值计算对应的十进制数值。
阅读全文