比较IPv6地址

时间:2013-08-02 09:27:23

标签: ip ip-address

有任何人比较两个ipv6地址的好主意。看起来短缺规则使它变得复杂。

例如完整地址 1234:将0db8:0000:0000:0000:FF00:FF00:0011

  1. 可以删除前导零=> 1234:将0db8 :::: FF00:FF00:11
  2. 可以删除一组空字段1234:0db8 :: ff00:ff00:00111
  3. 最后32位可以是老式的ipv4地址1234:0db8 :::: ff00:172.0.0.15

2 个答案:

答案 0 :(得分:2)

您可以使用标准库函数socket.inet_pton将地址转换为字节字符串以进行比较:

>>> socket.inet_pton(socket.AF_INET6,'1234:0db8::ff00:ff00:0011')
'\x124\r\xb8\x00\x00\x00\x00\x00\x00\xff\x00\xff\x00\x00\x11'
>>> socket.inet_pton(socket.AF_INET6,'1234:0db8:0000:0000:0000:ff00:ff00:0011')
'\x124\r\xb8\x00\x00\x00\x00\x00\x00\xff\x00\xff\x00\x00\x11'

这将降低您创建自己的IPv6错误的风险。


上面的示例是在python中,但inet_pton函数可用于不同的平台和语言:

答案 1 :(得分:0)

你可以用冒号分割它,然后比较每个值。 如果您遇到空字段 - >为它插入'0000'。 如果您遇到少于4位的字段 - >用零填充

此外,您可以为每个字段赋予权重以强调字段的值。