Java 转换十六进制字符串为 Int

本文将介绍我们可以用来将十六进制字符串转换为 int 的三种方法。十六进制或十六进制是一个 16 基数的数字系统,即有 16 种可能的符号代表数字。用来表示数字的十六进制值是十进制中的 0-9,A-F 代表十进制系统中的 10-15。

在下面的例子中,我们将看看在 Java 中把一个给定的不同长度的十六进制字符串转换为 int 的步骤。

Java 使用 Integer.decode() 将十六进制短字符串转换为 int

在第一个例子中,我们使用的是 Integer 类的 decode() 函数,该函数接收一个 String,然后返回一个基元 int

在 Java 中,一个 int 可以存储最小值-231到最大值 231-1。如果我们希望我们的结果是 int 类型的,我们就不能在长字符串上工作。本文的进一步例子将展示我们如何将较长的十六进制值转换为数值。

public class Main {
    public static void main(String[] args) {
        String hex = "0x2fd";
        int convertedValue = Integer.decode(hex);
        System.out.print(convertedValue);
    }
}

输出:

765

使用 Long.parseLong() 将长十六进制字符串转换为 int

正如我们上面所讨论的,我们不能将大的十六进制值转换为基元 int,因为它可以返回超出 int 容量的值。这就是为什么在这个例子中,我们使用 Long,它有一个更大的容量,-263到 263-1。

LongparseLong() 方法需要两个参数,一个字符串和一个基值,将字符串解析为一个原始的长整数。

public class Main {
    public static void main(String[] args) {
        String hex = "AA0F245C";
        long l = Long.parseLong(hex, 16);
        System.out.println(l);
    }
}

输出:

2853119068

使用 BigInteger 将一个很长的十六进制字符串转换为 int

十六进制值可以用于各种用途,其中之一就是当我们想要加密一些东西的时候,这个十六进制值可能会很长。如果我们因为某些原因想把这个十六进制值转换成数值,那么我们可以使用 BigInteger,正如它的名字所示,它可以容纳大的整数。

在下面的例子中,我们将十六进制值与基值一起传递给 BigInteger 的构造函数。我们也可以从 BigInteger.intValue() 中得到 int 的值,但它只会返回起始的 32 位。

import java.math.BigInteger;
public class Main {
    public static void main(String[] args) {
        String hex = "4D21C5BA77D06212F39E16BF2756E9811125F7FC";
        BigInteger bigInteger = new BigInteger(hex, 16);
        System.out.println(bigInteger);
    }
}

输出:

440345438517096076415390637616379300179635206140