[英]Python unpack binary data, numeric of length 12
我有一个大字节序二进制文件。 有两个数字字段。 第一个长度为8,第二个长度为12。如何解压两个数字?
我正在使用Python模块struct( https://docs.python.org/2/library/struct.html ),它适用于第一个字段
num1 = struct.unpack('>Q',payload[0:8])
但我不知道如何解开第二个电话。 如果我将其视为char(12),则得到的内容类似于'\\x00\\xe3AC\\x00\\x00\\x00\\x06\\x00\\x00\\x00\\x01'
。
谢谢。
我认为您应该为长度为16的第二个数字创建一个新的字节字符串,在后12个字节中填充保存您的数字的字节字符串,并在前4个字符中填充零。
然后使用格式>QQ
unpack解码字节字符串,比方说numHI
和numLO
变量。 然后,您得到的最终数字是: number = numHI * 2^64 + numLO
*。 在Python中,整数可以(几乎)任意大小,因此您不会遇到溢出问题。 那只是一个粗略的主意,如果您在用实际的Python代码编写代码时遇到问题,请发表评论,然后我将编辑我的答案以提供更多帮助。
* ^在这种情况下是数学能力,因此请使用math.pow。 或者,您可以使用字节移位: number = numHI << 64 + numLO
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.