python - 为什么将 struct.unpack 与 bytearray 一起使用的相同代码在 Python 2.7.3 中引发异常,但在 2.7.5 中却没有?

标签 python arrays python-2.7 unpack

我编写了一个在字节数组上使用 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 一起使用时出现异常:

error: unpack requires a string argument of length 8

我需要在解包之前将字节数组显式转换为字符串。这与Python版本更改有关吗? struct manual对此只字未提。我想避免进行所有转换,有什么办法可以解决这个问题吗?

最佳答案

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

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

它也适用于 Python3。

关于python - 为什么将 struct.unpack 与 bytearray 一起使用的相同代码在 Python 2.7.3 中引发异常,但在 2.7.5 中却没有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20612587/

相关文章:

python - 从类定义中的列表理解访问类变量

python - 从 Tornado Python 中的 RequestHandler 访问 URL

php - 定义数组 php 的替代方法

python - Pandas Python : Cast array type to int

python - Office 365 REST API (Python) 将电子邮件标记为已读

python - 将 URL 的标题部分拆分为单独的列 - Python

python - ConfigParser 之类的东西是否适合在运行之间保存状态(键,值)?

arrays - 检查数组中的字符串是否包含另一个数组中的子字符串

python - 在现有图表之上绘图 Python Matplotlib

python - 何时使用 SQLAlchemy .get() 与 .filter(Foo.ID == primary_key_id).first()