使用Python解压/打包二进制数据中的任意位深度整数

问题描述

我想将两个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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...