我希望自己实现一个struct.pack
的函数,可以将IP地址字符串(例如“192.168.0.1”)打包成32位压缩值,而不使用内置方法socket.inet_aton
。
我已经完成了以下部分:
ip = "192.168.0.1"
hex_list = map(hex, map(int, ip.split('.')))
# hex list now is : ['0xc0', '0xa8', '0x0', '0x01']
我的问题是:
如何将 ['0xc0', '0xa8', '0x0', '0x01']
转换为 '\xc0\xa8\x00\x01'
,(这是我从 socket.inet_aton(ip)
获取到的内容)?
(另外 - 为什么字符串中间有一个 NUL (\x00
)?我认为我缺乏对 \x
格式的理解)
\\
只是 Python 显示单个\
的方式。将'\\x%02x'
更改为r'\x%02x'
,注意你会得到相同的结果。 - Stephen Rauchsocket.inet_aton
接收到的值相同吗? - Ofer Arial