为什么使用 struct.unpack 和 bytearray 的相同代码在 Python 2.7.3 中引发异常,但在 2.7.5 中却不会?

2023-11-30

我写了一个应用程序,使用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版本变化有关吗?这结构手册对此什么也没说。我想避免进行所有的选角,有什么办法可以解决这个问题吗?


另外,您可以用字节包装 bytearray 对象:

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

它也适用于Python3。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么使用 struct.unpack 和 bytearray 的相同代码在 Python 2.7.3 中引发异常,但在 2.7.5 中却不会? 的相关文章

随机推荐