繁体   English   中英

Python解压缩二进制数据,长度为12的数字

[英]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解码字节字符串,比方说numHInumLO变量。 然后,您得到的最终数字是: number = numHI * 2^64 + numLO *。 在Python中,整数可以(几乎)任意大小,因此您不会遇到溢出问题。 那只是一个粗略的主意,如果您在用实际的Python代码编写代码时遇到问题,请发表评论,然后我将编辑我的答案以提供更多帮助。

* ^在这种情况下是数学能力,因此请使用math.pow。 或者,您可以使用字节移位: number = numHI << 64 + numLO

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM