杰瑞科技汇

Java 16进制转10进制怎么实现?

Java中16进制转10进制的方法

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

Java 16进制转10进制怎么实现?-图1
(图片来源网络,侵删)

方法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

注意事项

  1. 16进制字符串不区分大小写,"1A"和"1a"都会被正确解析
  2. 如果输入的16进制字符串包含无效字符(如"G"),会抛出NumberFormatException
  3. 对于负数的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
Java 16进制转10进制怎么实现?-图2
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇