将 ip 地址转换为二进制表示

Converting an ip address to binary representation

我想获取 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.183 4\x04\x14\xb7 的格式是这样的?我在哪里可以找到有关它的更多信息?

字符'4''\x34'是等价的。都代表值52.