【问题标题】:inet_aton similar function for IPv6IPv6 的 inet_aton 类似功能
【发布时间】:2012-05-20 11:14:17
【问题描述】:

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

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

现在我需要将 IPv6 ip 2001:23::207:142 转换为类似的字符串。它给了我错误,因为它不是 IPv4 地址。我该怎么做?

【问题讨论】:

    标签: python ip type-conversion ipv6 inet


    【解决方案1】:

    这是我之前用于此目的的代码。注意它返回一个 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'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-19
      • 2011-02-28
      • 2012-10-04
      相关资源
      最近更新 更多