struct.unpack(...)在x64机器上的工作方式不同

时间:2017-07-05 13:40:46

标签: python struct

我想做 key = struct.unpack('L', bytes_key)[0] 其中bytes_key是b'\xa6\x0b\xddE',它在我的x32机器上运行正常,但每当我尝试在x64机器上执行它时,它都会让我出错。

  

Traceback (most recent call last):
File "unpacker.py", line 42, in <module> decompile(obj[1]) File "unpacker.py", line 13, in decompile f.write(decrypt_record(arg).content) File "crypt.py", line 61, in crypt.decrypt_record (crypt.c:2447) record.checksum = decrypt(record.checksum, checksum_key)
File "crypt.py", line 36, in crypt.decrypt (crypt.c:1821) key = struct.unpack('L', bytes_key)[0] struct.error: unpack requires a bytes object of length 8

1 个答案:

答案 0 :(得分:1)

您可以尝试使用&#34; =&#34;在&#34; L&#34;:

之前
...
struct.unpack("=L", bytes_key)[0]
...

根据documentation,它说:

  

标准尺寸仅取决于格式字符;请参阅格式字符部分中的表。   请注意&#39; @&#39;之间的区别和&#39; =&#39;:都使用本机字节顺序,但后者的大小和对齐是标准化的。