python - 为什么这个解压后的短文会被错误地解释?

标签 python struct udp icmp unpack

我正在解包 UDP header (它本身就是 ICMP 响应的有效负载)。我正在尝试获取源端口号和目标端口号。

这是代码的相关部分:

udp_head = struct.unpack('HHHH', data[48:56])
print udp_head
print binascii.hexlify(struct.pack('H', udp_head[1]))

运行它会得到以下结果:

(42389, 39554, 2048, 61179)
829a

这句话一半是错误的,一半是正确的。目标端口(列表中的第二项)应该是 33434。因此第一行打印出错误。但在第二行,它是正确的(0x829A == 33434)。

有什么想法为什么会发生这种情况吗?

最佳答案

这能给你线索吗?

>>> print hex(33434)
0x829a
>>> print hex(39554)
0x9a82
>>>

这可能是字节顺序问题。

关于python - 为什么这个解压后的短文会被错误地解释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20457129/

相关文章:

Python Django populate() 不可重入

c++ - 二进制 '<' : 'const_Ty' does not define this operator or a conversion to a type acceptable to the predefined operator

c - 将数组分配给 C 中的结构值

c++ - 如何使用 boost asio 接收发送到 255.255.255.255 的 UDP 广播?

javascript - 使用 node.js 监听 udp 数据报

python - 在 Google AppEngine 中检索 .txt 文件内容

python - 为什么下面的正则表达式代码返回逗号 (,)

python - 删除 Tkinter 中的最小化/最大化按钮

元素少于结构的 C++ 初始值设定项列表

Java可靠的UDP