在搞乱 struct.pack() 和 socket.htons() 时,我得到了一些对我来说没有意义的结果......
>>> struct.pack("h", socket.htons(80))
'\x00P'
>>> struct.pack("h", socket.htons(81))
'\x00Q'
>>> struct.pack("h", socket.htons(82))
'\x00R'
P、Q 和 R 来自哪里,它们是什么意思?在文档中找不到关于它们的任何信息。
在搞乱 struct.pack() 和 socket.htons() 时,我得到了一些对我来说没有意义的结果......
>>> struct.pack("h", socket.htons(80))
'\x00P'
>>> struct.pack("h", socket.htons(81))
'\x00Q'
>>> struct.pack("h", socket.htons(82))
'\x00R'
P、Q 和 R 来自哪里,它们是什么意思?在文档中找不到关于它们的任何信息。
, ,的ASCII 码是P
, Q
, .R
80
81
82
>>> ord('P')
80
在交互式外壳中,可打印字符本身打印,而不是使用\xhh
格式转义。
>>> hex(80)
'0x50'
>>> '\x50'
'P'
>>> '\xff'
'\xff'
hitted.pack():返回一个字节对象。像这样 :
>>> type(struct.pack("h", socket.htons(80)))
<class 'bytes'>
当您在 shell 中显示对象时,她以十六进制方式显示(符号为 0x),因此如果将其切换为十进制,并比较 ASCII 映射,可能会找到原始来源。