杰瑞科技汇

Java 16进制如何转10进制?

在 Java 中,将 16 进制(Hexadecimal)字符串转换为 10 进制(Decimal)整数,可以使用 Integer.parseInt()Long.parseLong() 方法,并指定 16 作为基数,以下是详细的代码示例和说明:

Java 16进制如何转10进制?-图1
(图片来源网络,侵删)

使用 Integer.parseInt()(适用于 int 范围)

public class HexToDecimal {
    public static void main(String[] args) {
        String hexString = "1A3F"; // 16 进制字符串
        int decimalValue = Integer.parseInt(hexString, 16); // 转换为 10 进制
        System.out.println("16 进制 " + hexString + " 转换为 10 进制是: " + decimalValue);
        // 输出: 16 进制 1A3F 转换为 10 进制是: 6719
    }
}

说明:

  • Integer.parseInt(String str, int radix) 是一个静态方法,用于将字符串解析为有符号整数。
  • radix 参数指定进制(16 表示 16 进制)。
  • 如果字符串包含非 16 进制字符(如 GZ),会抛出 NumberFormatException

使用 Long.parseLong()(适用于超出 int 范围的大数)

16 进制字符串表示的数值超出 int 范围(Long.MAX_VALUE),应使用 Long.parseLong()

public class HexToDecimalLong {
    public static void main(String[] args) {
        String largeHexString = "FFFFFFFFFFFFFFFF"; // 16 进制字符串(对应 Long.MAX_VALUE)
        long decimalValue = Long.parseLong(largeHexString, 16);
        System.out.println("16 进制 " + largeHexString + " 转换为 10 进制是: " + decimalValue);
        // 输出: 16 进制 FFFFFFFFFFFFFFFF 转换为 10 进制是: 18446744073709551615
    }
}

处理带前缀的 16 进制字符串(如 0x0X

16 进制字符串带有 0x0X 前缀,需要先去除前缀:

public class HexWithPrefix {
    public static void main(String[] args) {
        String hexWithPrefix = "0x1A3F";
        // 去除前缀 "0x" 或 "0X"
        String cleanHex = hexWithPrefix.replaceAll("^0[xX]", "");
        int decimalValue = Integer.parseInt(cleanHex, 16);
        System.out.println("16 进制 " + hexWithPrefix + " 转换为 10 进制是: " + decimalValue);
        // 输出: 16 进制 0x1A3F 转换为 10 进制是: 6719
    }
}

异常处理

如果输入的字符串不是有效的 16 进制数,会抛出 NumberFormatException,建议使用 try-catch 处理:

public class HexConversionWithErrorHandling {
    public static void main(String[] args) {
        String invalidHex = "1G3F"; // 包含非法字符 'G'
        try {
            int decimalValue = Integer.parseInt(invalidHex, 16);
            System.out.println("转换结果: " + decimalValue);
        } catch (NumberFormatException e) {
            System.err.println("错误: '" + invalidHex + "' 不是有效的 16 进制字符串!");
        }
    }
}

反向转换:10 进制转 16 进制

如果需要反向操作(10 进制转 16 进制),可以使用 Integer.toHexString()Long.toHexString()

public class DecimalToHex {
    public static void main(String[] args) {
        int decimalValue = 6719;
        String hexString = Integer.toHexString(decimalValue); // 转换为 16 进制字符串
        System.out.println("10 进制 " + decimalValue + " 转换为 16 进制是: " + hexString.toUpperCase());
        // 输出: 10 进制 6719 转换为 16 进制是: 1A3F
    }
}

操作 方法 示例
16 进制 → 10 进制(int) Integer.parseInt(str, 16) Integer.parseInt("1A3F", 16)6719
16 进制 → 10 进制(long) Long.parseLong(str, 16) Long.parseLong("FFFFFFFF", 16)4294967295L
10 进制 → 16 进制 Integer.toHexString(num) Integer.toHexString(6719)"1a3f"

根据需求选择合适的方法,并注意处理异常和边界情况。

分享:
扫描分享到社交APP
上一篇
下一篇