【发布时间】:2018-01-12 23:18:22
【问题描述】:
我想获取 IP 地址的字节表示(大端,4 个字节)。
我正在使用 Python 2,我正在使用这个模块:https://github.com/phihag/ipaddress
如果我想得到127.0.0.1 的字节表示,我得到了预期的结果。
>>> ip_address(u'127.0.0.1').packed
'\x7f\x00\x00\x01'
但是对于52.4.20.183,我得到了这个结果:
>>> ip_address(u'52.4.20.183').packed
'4\x04\x14\xb7'
我觉得这种格式很奇怪,尤其是前面的4。我期待它是\x34\x04\x14\xB7。但显然,两者是相同的:
>>> ipaddress.IPv4Address(b'4\x04\x14\xb7')
IPv4Address(u'52.4.20.183')
>>> ipaddress.IPv4Address(b'\x34\x04\x14\xB7')
IPv4Address(u'52.4.20.183')
52.4.20.1834\x04\x14\xb7 的格式为什么是这样?在哪里可以找到更多信息?
【问题讨论】:
-
原来
'4'是字节值52的ASCII表示,见asciitable.com。换句话说:b'4' == b'\x34' == bytes([52]). -
根据其描述,
packed返回一个bytes对象,该对象或多或少源自常规string。有关详细说明,请参阅bytes。您也可以在该官方文档中找到更多信息。
标签: python ip-address