Python中的IPv6地址表示

时间:2015-06-14 08:19:57

标签: python ipv6

我正在将IPv6地址转换为文本表示,并注意到我无法解释的行为:

In[38]: socket.inet_ntop(socket.AF_INET6, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x7f\x00\x00\x01')
Out[38]: '::ffff:127.0.0.1'
In[39]: socket.inet_ntop(socket.AF_INET6, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\x7f\x00\x00\x00')
Out[39]: '::ff:ffff:7f00:0'

我很惊讶地看到::ffff:127.0.0.1,我希望它是::ffff:7f00:0。它是标准的还是至少是常见的?以这种方式表示哪些IPv6地址? Wikipedia article根本没有提到它。我很困惑。

1 个答案:

答案 0 :(得分:5)

POSIX page for inet_ntop指定格式作为选项之一(略微改述):

  

在处理IPv4和IPv6节点的混合环境时,有时更方便的第三种形式是x:x:x:x:x:x:d.d.d.d,其中x个字符是六个高阶16位的十六进制值地址的各个部分和d字符是地址的四个低阶8位片段的十进制值(标准IPv4表示)。