Python中IPv6地址表示方法

5

我正在将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地址是以这种方式表示的?在维基百科文章中完全没有提到。我感到困惑。
1个回答

5

POSIX页面中的inet_ntop指定了该格式作为其中一种选项(稍加改述):

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接