1

我有一个包含大端二进制文件的文件。有两个数字字段。第一个长度为 8,第二个长度为 12。如何解压缩这两个数字?

我正在使用 Python 模块结构(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'.

谢谢。

4

1 回答 1

1

我认为您应该为长度为 16 的第二个数字创建一个新的字节字符串,用保存您的数字的字节字符串填充最后 12 个字节,用零填充前 4 个字节。

然后用 unpack 解码字节串格式>QQ,比如说 to numHInumLO变量。然后,你会得到最终的数字:number = numHI * 2^64 + numLO*。AFAIR Python 中的整数可以(几乎)任意大,因此不会出现溢出问题。这只是粗略的想法,如果您在实际的 Python 代码中编写时遇到问题,请发表评论,然后我将编辑我的答案以提供更多帮助。

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

于 2014-06-27T13:50:39.340 回答