繁体   English   中英

带有bytearray的struct.unpack

[英]struct.unpack with bytearray's

我编写了一个在字节数组上使用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需要长度为8的字符串参数

我需要在将其解压缩之前将字节数组显式转换为字符串。 这与python版本有关吗? 结构手册没有说明这一点..我想避免做所有的铸造,有什么方法可以解决这个问题吗?

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

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

它也适用于Python3。

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

如果您的脚本必须同时使用版本2.7.5和2.7.3并且您已找到一种方法使它在两个版本上运行(通过强制转换为字符串),那么您可以将解决方法代码与对struct.unpack的调用struct.unpack放入一个函数并调用此函数,而不是直接执行struct.unpack的转换和调用,无论您需要在哪里执行它。 这样你的代码将保持优雅,简短和干燥

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM