2012-05-11 29 views
5

我使用inet_aton到IPv4的IP(216.12.207.142)转换为字符串3624718222.我用下面的代码INET_ATON类似的功能: 23 :: 207:142类似的字符串。它给我错误,因为它不是IPv4地址。我怎样才能做到这一点?对IPv6

回答

6

这是我以前用于此目的的代码。需要注意的是它返回而不是字符串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'