我正在解包 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/