![](/img/trans.png)
[英]Python struct.unpack(“i”, bytearray(data)) to Swift 4
[英]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.