序列化和绘制 IP 地址的标准方法?

Standard way to serialize and plot IP addresses?

我正在尝试找到一种将 IP 地址转换为整数或实数值的方法,以便可以对它们进行数学分组并以有意义的方式绘制出来。理想情况下,具有相同最左边八位字节的 IP 会相似,共享最左边两个八位字节的 IP 会更相似,依此类推。

是否有标准的、公认的方法来做到这一点?例如,编入 Python 库?还是我只需要编写自己的算法?

谢谢。

你是说,像... ipaddress module

>>> import ipaddress
>>> i = ipaddress.ip_address('10.9.8.7')
>>> int(i)
168364039

最左边的八位字节相同的IP地址将接近,因为如果将地址转换为int,它只是指IP地址实际表示的数字(10.9.8.7 ≙ 10*256^3 + 9*256 ^2 + 8*256^1 + 7*256^0).

它也适用于 IPv6:

>>> int(ipaddress.ip_address("2001:db8::1"))
42540766411282592856903984951653826561