Python中的IPv6地址表示

Fir*_*his 5 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'
Run Code Online (Sandbox Code Playgroud)

我很惊讶地看到::ffff:127.0.0.1,我期待它::ffff:7f00:0.它是标准的还是至少是常见的?以这种方式表示哪些IPv6地址?在维基百科的文章并没有提到它.我很迷惑.

pax*_*blo 5

对POSIX页面inet_ntop指定该选项(略转述)格式之一:

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