我正在开发一个为项目生成虚拟二进制文件的工具。我们有一个描述真实二进制文件的规范,这些文件是从具有不同位长度的值流创建的。我使用输入和规范文件来创建值列表,并使用 bitstring
库的 BitArray
类来转换值并将它们连接在一起。
问题是值的长度加起来并不总是完整的字节,我需要文件按原样包含这些位。通常我可以使用 BitArray.tofile()
,但该方法会自动在末尾用零填充文件。
还有其他方法可以将位写入文件吗?
最佳答案
显然原始二进制文件只能存储字节,即 8 位的倍数。
当您需要存储数据(位)和元数据(关于数据的数据,在本例中为位长度)时,有两种方式:
选择或发明一种文件格式,例如具有长度和 hexdump 的 JSON 结构(不节省空间,只是一个例子):
{ "length": 11, "data": "c3a" }
使用 sidecar file元数据文件。这种情况不太常见。
关于python - 如何在 Python 中编写位长度不是 8 的倍数的二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56098610/