Java 二进制到十六进制转换

17 Mar 2025 | 4 分钟阅读

在编程中,类型转换是一项关键任务。有时我们需要将一种类型转换为另一种类型。在Java 转换部分,我们讨论了各种类型的转换。在本节中,我们将讨论如何在 Java 中将二进制转换为十六进制

十六进制数

顾名思义,十六进制数由 16 个实体组成,其中 10 个数字(0-9)代表前 10 个十六进制数,其余六个实体由 A 到 F 表示(由数字 10 到 15 表示)。请注意,十六进制数系统中的最小数字是 0,最大数字是 15,用 F 表示。

Java Binary to Hexadecimal Conversion

在上面的示例中,我们将二进制数 11011111 分成 4 位一组,例如 11011111,它们对应于十六进制数的两个字符(D 和 F)。

Java 将二进制转换为十六进制的程序

在 Java 中将二进制转换为十六进制有两种方法:

  • 使用 Integer.toHexString() 方法
  • 获取余数并将转换后的十进制数除以 16

使用 Integer.toHexString() 方法

在下面的 Java 程序中,我们定义了两个函数:一个用于读取数字,另一个用于将数字从二进制转换为十六进制。在 get() 函数中,我们首先将给定的数字转换为整数。要将二进制数转换为十六进制数,我们调用了 Integer 类的 toHexString() 方法。

语法

该方法接受一个整数并将其转换为字符串。它返回相应的十六进制字符串。

BinaryToHexadecimal1.java

输出 1

Enter the number: 11111
Hexadecimal Value is: 1f

输出 2

Enter the number: 11001100
Hexadecimal Value is: cc

让我们来看另一种相同的方法。

算法

  1. 将给定的二进制数转换为十进制数(首先,通过对数字取余除以 10 来提取每个数字)。
  2. 将此数字与 2 的递增幂相乘。
  3. 反复将给定的二进制数除以 10,在每次迭代中消除最后一个数字。
  4. 得到十进制数后,使用 toHexString() 方法获得十六进制字符串作为结果。

让我们通过一个例子来理解上述步骤。

示例

假设给定的二进制数是 01011011。首先,我们将使用 Math.pow() 方法并减小长度将其转换为十进制数。因此,

01011011 = (0 × 27) + (1 × 26) + (0 × 25) + (1 × 24) + (1 × 23) + (0 × 22) + (1 × 21) + (1 × 20)

= (0 × 128) + (1 × 64) + (0 × 32) + (1 × 16) + (1 × 8) + (0 × 4) + (1 × 2) + (1 × 1)

= 0 + 64 + 0 + 16 + 8 + 0 + 2 + 1

= 91(01011011 的十进制表示)

现在,我们将十进制数(91)转换为十六进制数。将十进制数与 16 进行比较。它更大,所以我们将十进制数除以 16。

91 ÷ 16,我们得到商 5,余数 11。再次,我们将余数(11)与 16 进行比较,它小于 16。

因此,余数(11)的十六进制数是 B。即,

91 = 16 × 5 +11 = B

5 = 16 × 0 + 5 = 5

= 5B (01011011 的十六进制表示)

让我们在 Java 程序中实现上述步骤。

BinaryToHexadecimal2.java

输出

Binary Number: 1100110011
Hexadecimal Number: 9E

让我们使用 if-else 语句查看上述方法。

BinaryToHexadecimal3.java

输出

Enter the Binary Number: 1110001110
The respective Hexadecimal number is: 38E