Java 中将 IP 转换为二进制

17 Mar 2025 | 4 分钟阅读

在计算机中,基本转换(如十进制到二进制或反之)是一项重要的任务。在网络中,理解 IP 地址和子网划分非常重要。IP 地址是网络的主要功能。对于网络工程师来说,分配 IP 地址,通过子网确定网络 ID 或主机 ID 是一项至关重要的任务。

对简单事情有扎实的理解可以使复杂任务更容易。在本节中,我们将讨论如何将 IP 地址转换为二进制。

Convert IP to Binary in Java

将 IP 地址转换为二进制

以下是如何将十进制 IP 地址转换为其二进制形式的步骤,无需记忆。

为了记住数值,从数字 1 开始,从右向左移动。将该数字加倍七次。

例如,从右侧的 1 开始。下一个数字(第二个)将是第一个数字的两倍,即1*2=2。对于第三个数字,将最后一个数字(2)加倍,即2*2 = 4。对于第四个数字,将最后一个数字(4)加倍,即4*2 = 8。重复该过程,直到我们将原始数字加倍七次。

将数字加倍七次后,按行排列数值。因为我们将为数值分配 0 或 1。

为了将 IP 地址转换为二进制,我们将获取数字字符串并从左到右开始。对于每个值,我们都有一个问题:“我能从剩余的十进制数中减去这个值吗?”如果可以,则在此处放置1,否则放置0

另一种放置 0 或 1 的方法是,通过添加哪些值可以得到 IP 地址的十进制值。如果通过添加三个值得到十进制值,则在它们下方放置1,并在其余值下方放置0

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

示例

例如,我们需要将以下 IP 地址转换为二进制。

192.168.32.2

每个表示 8 位,即 32 位 IP 地址。

用 2n 表示 8 位,其中 n 表示幂 n,n+1,n+2,n+3,…,依此类推。让我们以 8 位写出这些值。

20 = 1

21 = 2

22 = 4

23 = 8

24 = 16

25 = 32

26 = 64

27 = 128

为了方便,请按行写出数值

1          2          4          8          16        32        64        128

通过将 64 和 128 相加得到192,因此我们将在 64 和 128 下方写 1-1,并在其余数值下方写 0。因此,192 的二进制表示是

192: 00000011

通过将 8、32 和 128 相加得到168,因此我们将在 8、32 和 128 下方写 1-1。因此,168 的二进制表示是

168: 00010101

同样,32 的二进制表示是

32: 00000100

同样,2 的二进制表示是

2: 01000000

请注意,当我们组合二进制 IP 地址时,请将每个部分的二进制表示颠倒。因此,IP 地址192.168.32.2的二进制表示是11000000.10101000.00100000.00000010。

Java 程序将 IP 地址转换为二进制

IpToBinaryConverter.java

输出

Please enter an IP Address.
192.168.32.2
11000000
10101000
100000
10

注意:上面的程序仅将 IPv4 地址转换为二进制。

使用 IPAddress Java 库

这是一个开源的 Java 库,用于处理 IP 地址和子网。它同时兼容 IPv4 和 IPv6 地址。

注意:在运行以下程序之前,请确保 ipaddress-5.3.4.jar 文件已附加到您的项目中。我们也可以将依赖项添加到 pom.xml 文件中。

ConvertIpToBinary.java

输出 1

Enter IP address: 235.145.38.12
235.145.38.12 is equivalent to 11101011100100010010011000001100

输出 2

Enter IP address: a:b:c:d:e:f:a:b
a:b:c:d:e:f:a:b is equivalent to 00000000000010100000000000001011000000000000110000000000000011010000000000001110000000000000111100000000000010100000000000001011

下一主题Java Macro