问题描述
我想将两个13位无符号整数包装在用零填充的32位二进制结构中,然后将其保存到二进制文件中(出于这个问题,每个整数可以具有任意不同的位深度)。 / p>
我可以做到这一点:
foo = 1
bar = 8191
baz = (foo & 0x1FFF) | (bar & 0x1FFF) << 13
with open('data32.bin','bw') as f:
f.write(baz.to_bytes(4,byteorder='big'))
但是我正在寻找一种更好的,也许更Python化的方式。如果它允许使用一种定义格式的方式(例如,我可以使用相同的定义将二进制数据读回变量),则是一个加分。
我尝试过:
- 一个非常方便的软件包,名为bitstruct。它以一种不错的方式实现了我想要的功能,但是它在某些主要的python3程序包管理器(特别是conda)中似乎不可用,这会很好。
- struct(带包装)。但看起来它仅适用于C类型,而不适用于任意位深度(如我的示例)。
- 字节数组,位数组。看起来他们可以胜任这项工作,但看起来却有些过头,当我开始用它们编写代码时,实际上比我的例子还要难看。
您碰巧还有其他建议吗? 谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)