0

在搞乱 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 来自哪里,它们是什么意思?在文档中找不到关于它们的任何信息。

4

2 回答 2

10

, ,的ASCII 码是P, Q, .R808182

>>> ord('P')
80

在交互式外壳中,可打印字符本身打印,而不是使用\xhh格式转义。

>>> hex(80)
'0x50'
>>> '\x50'
'P'
>>> '\xff'
'\xff'
于 2013-10-07T13:49:46.690 回答
0

hitted.pack():返回一个字节对象。像这样 :

>>> type(struct.pack("h", socket.htons(80)))

<class 'bytes'>

当您在 shell 中显示对象时,她以十六进制方式显示(符号为 0x),因此如果将其切换为十进制,并比较 ASCII 映射,可能会找到原始来源。

于 2016-06-07T09:55:10.327 回答