我想将 1023 转换为 ipv4 格式,因为我想将此数字添加到另一个 ipv4 格式的数字。谁能帮忙解决一下。
将十进制数转换为 ipv4 格式
网络工程
IPv4
2022-03-02 03:19:09
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。
乔纳森