小编典典

带有字节数组的struct.unpack

python

我编写了一个struct.unpack在字节数组上使用的应用程序。使用python 2.7.5在我的机器上运行它,效果很好:

>>> data
bytearray(b'\x07\x00\x00\x00\x00\x00\x00\x00')
>>> struct.unpack("<Q", data)   
(7,)

但是,我尝试将其与python 2.7.3版一起使用时出现异常:

错误:解压缩需要长度为8的字符串参数

我需要在将其解压缩之前将字节数组显式转换为字符串。这与python版本更改有关吗?该结构手册只字未提这个..我想避免这样做所有的铸造,是有解决什么办法?


阅读 153

收藏
2021-01-20

共1个答案

小编典典

您已经注意到,这与Python版本有关。显然struct.unpack是在2.7.3版之后修复或扩展的。

如果您的脚本必须同时适用于2.7.5和2.7.3版本,并且已找到一种使其在两个版本上都可以运行的方法(通过强制转换为字符串),则可以将变通方法代码和对的调用一起struct.unpack放入函数和调用此函数,而不是直接对struct.unpack需要执行此操作的地方进行强制转换和调用。这样,您的代码将保持简洁,简短和DRY

2021-01-20