Java中16进制转10进制的方法
在Java中,有几种方法可以将16进制字符串转换为10进制整数,以下是几种常用的方法:

(图片来源网络,侵删)
方法1:使用Integer.parseInt()
String hexString = "1A"; // 16进制字符串 int decimalValue = Integer.parseInt(hexString, 16); // 第二个参数表示进制 System.out.println(decimalValue); // 输出: 26
方法2:使用Long.parseLong()(适用于大数)
String hexString = "FFFFFFFF"; // 16进制字符串 long decimalValue = Long.parseLong(hexString, 16); System.out.println(decimalValue); // 输出: 4294967295
方法3:使用BigInteger(适用于任意长度的16进制数)
import java.math.BigInteger; String hexString = "DEADBEEFCAFEBABE"; BigInteger decimalValue = new BigInteger(hexString, 16); System.out.println(decimalValue); // 输出: 15591476909834471566
方法4:手动转换(理解原理)
String hexString = "1A";
int decimalValue = 0;
for (int i = 0; i < hexString.length(); i++) {
char c = hexString.charAt(hexString.length() - 1 - i);
int digit = Character.digit(c, 16);
decimalValue += digit * Math.pow(16, i);
}
System.out.println(decimalValue); // 输出: 26
注意事项
- 16进制字符串不区分大小写,"1A"和"1a"都会被正确解析
- 如果输入的16进制字符串包含无效字符(如"G"),会抛出NumberFormatException
- 对于负数的16进制表示,Java通常使用补码形式,如"FFFFFFFF"表示-1(当作为int解析时)
示例:处理带前缀的16进制字符串
如果16进制字符串带有"0x"或"0X"前缀,需要先去除:
String hexString = "0x1A";
if (hexString.startsWith("0x") || hexString.startsWith("0X")) {
hexString = hexString.substring(2);
}
int decimalValue = Integer.parseInt(hexString, 16);
System.out.println(decimalValue); // 输出: 26
(图片来源网络,侵删)
