我编写了一个在字节数组上使用struct.unpack
的应用程序。使用Python2.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
在解包之前,我需要显式地将bytearray转换为string。这与python版本更改有关吗?关于这个,struct manual什么也没说。。我想避免做所有的演员,有办法吗?
正如您所注意到的,这与Python版本有关。显然
struct.unpack
在版本2.7.3之后被修复或扩展。如果您的脚本必须同时使用2.7.5和2.7.3版本,并且您已经找到了在两个版本上运行它的方法(通过强制转换为字符串),那么您可以将工作区代码和对
struct.unpack
的调用一起放入一个函数中,并调用此函数,而不是在需要的任何地方直接执行struct.unpack
的强制转换和调用。这样您的代码将保持优雅、简短和DRY。此外,还可以用字节包装bytearray对象:
对Python3也有效。
相关问题 更多 >
编程相关推荐