我正在使用inet_aton将IPv4 IP(216.12.207.142)转换为字符串3624718222。我使用以下代码:

ip_dec = unpack('>L', inet_aton(ip))[0]

现在我需要将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

并测试它
>>> ip6_to_integer("2001:23::207:142")
42540490934961530759802172199372521794L

或者作为一根绳子,如果你必须的话!
>>> str(ip6_to_integer("2001:23::207:142"))
'42540490934961530759802172199372521794'

关于python - 与IPv6类似的inet_aton函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10558441/

10-12 22:01