将十进制数转换为 ipv4 格式

网络工程 IPv4
2022-03-02 03:19:09

我想将 1023 转换为 ipv4 格式,因为我想将此数字添加到另一个 ipv4 格式的数字。谁能帮忙解决一下。

2个回答

如果您使用的是 python,您可以简单地使用 netaddr 库中的 IPAddress 对象。

In [68]: from netaddr import IPAddress
In [69]: IPAddress(1023)
Out[69]: IPAddress('0.0.3.255')

要获取 IPAddress 对象的整数值,您可以执行以下操作

In [74]: IPAddress("10.10.0.0").value
Out[74]: 168427520

所以你可以做这样的事情

In [75]: IPAddress("10.10.0.0").value + IPAddress(1023)
Out[75]: IPAddress('10.10.3.255')

编辑:如果你只有笔和纸,这就是你的做法。

您必须将两者都转换为十进制形式,将两者相加并从十进制转换为二进制。当您将122.13.17.34转换为二进制中的二进制中断并将其转换为二进制,这将为您提供011110.00001101.0001.0001.0001.00100010,然后删除点可以获取0111110100010001000100010001010。现在+ 1023 = 2047677729。将其转换回二进制,您将得到 01111010000011010001010100100001。现在将其分解为八位字节,然后将这些八位字节转换回十进制,您将得到 122.13.21.33

如果您是通过计算机进行的,显然它是以二进制形式完成的。但是考虑到你想手工做......

您直接以 256 为底添加数字。就像我们学习以 10 为底或以 12 为底的添加一样,我们将数字写在价值为 1、256、256²、256³ 的列中。当您添加一列并且超过 255 时,您必须进行。它看起来很难看,因为 base-256 数字需要多个字符才能写入。

首先将 1023₁₀ 转换为基数 256:除以 256 的适当幂,保留余数:1023₁₀ = [3][255]₂₅₆

     256³  256²  256     1     column values

   |     |     |   3 | 255 |
   | 122 |  13 |  17 |  34 |
   -------------------------
   |     |     |   1 |     |   this is the carry
   | 122 |  13 |  21 |  33 |

答案是点符号:122.13.21.33。

乔纳森