Python 为什么这个未打包的短消息会被错误地解释?

Python 为什么这个未打包的短消息会被错误地解释?,python,struct,udp,icmp,unpack,Python,Struct,Udp,Icmp,Unpack,我正在解包UDP报头(它本身就是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

我正在解包UDP报头(它本身就是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
>>>

这可能是一个字节顺序问题。

这能给你一个线索吗

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

这可能是字节顺序问题。

这就是问题所在,谢谢!我在网络订单格式字符串的开头添加了一个感叹号,现在它可以正常工作了。这就是问题所在,谢谢!我在networkorder格式字符串的开头添加了一个感叹号,现在它可以工作了。