将字符串(不带分隔符)转换为IPV6地址表示形式

时间:2019-07-19 09:30:25

标签: python ip-address ipv6

我正在尝试通过读取/proc/net/if_inet6来获取本地IPV6地址。但是那里的地址没有冒号,例如:000000000000000000000abc00070def

所以我要在多个地方添加冒号(:),

str6 = "000000000000000000000abc00070def"
i = 4
addr = str6[:i]
while i < len(str6):
    addr += ":" + str6[i:i+4]
    i += 4
print addr     # output: 0000:0000:0000:0000:0000:0abc:0007:0def

对于普通的字符串,它工作正常。

但是由于字符串是IPV6地址,所以想知道是否有更好的方法吗? (尝试使用ipaddress模块​​,但我认为没有冒号就不支持。)

1 个答案:

答案 0 :(得分:2)

ipaddress.IPv6Address也可以根据“ valid” 整数构造IPv6地址:

import ipaddress

ipv6_addr = ipaddress.ip_address(int('000000000000000000000abc00070def', 16))
print(ipv6_addr)

打印:

::abc:7:def

地址表示形式的长形式(爆炸):

print(ipv6_addr.exploded)

打印:

0000:0000:0000:0000:0000:0abc:0007:0def