San*_*Lad 6 python ip type-conversion ipv6 inet
我inet_aton用来将IPv4 IP(216.12.207.142)转换为字符串3624718222.我使用以下代码:
ip_dec = unpack('>L', inet_aton(ip))[0]
Run Code Online (Sandbox Code Playgroud)
现在我需要将IPv6 ip 2001:23 :: 207:142转换为类似的字符串.它给我错误,因为它不是IPv4地址.我怎样才能做到这一点?
这是我之前用于此目的的代码.请注意,它返回128位整数而不是字符串(整数通常更有用)
from socket import inet_pton, AF_INET6
from struct import unpack
def ip6_to_integer(ip6):
ip6 = inet_pton(AF_INET6, ip6)
a, b = unpack(">QQ", ip6)
return (a << 64) | b
Run Code Online (Sandbox Code Playgroud)
并测试它
>>> ip6_to_integer("2001:23::207:142")
42540490934961530759802172199372521794L
Run Code Online (Sandbox Code Playgroud)
或者如果你必须作为一个字符串!
>>> str(ip6_to_integer("2001:23::207:142"))
'42540490934961530759802172199372521794'
Run Code Online (Sandbox Code Playgroud)