2

假设我有一个 4 字节的文件作为输入,我想输出:

bit + first two bytes + bit + last two bytes

添加的位只是标志。如何在 python 中执行此操作(仅使用内置函数),以使新文件只有 5 个字节(2 位 + 4 字节 ~= 5 字节)。

我熟悉file.read(x)和其他 I/O 操作,但我不确定的部分是如何添加位。

编辑:我能够使用bitarraypython 库解决这个问题。这个模块支持做我想做的所有事情:

  • 使用将文件中的字节读入位数组fromfile()
  • 使用追加位append(True/False)
  • frombytes()使用和 python 标准struct 模块附加具有特定大小的变量。
  • 将位数组写入文件(如果需要,使用填充)使用tofile()

您还可以使用该python-bitstring模块来获得类似的结果。

4

2 回答 2

2

您应该使用按位运算符

flag1 = 1
flag2 = 1
flag1 = flag1
flag2 = flag2 << 17 # (2 bytes + 1 bit under it)  
byte1 = byte1 << 1  # (1 bit )
byte2 = byte2 << 18 # (2 bytes + 2 bits underit)

out = flag1 & flag2 & byte1 & byte2 # stack them up
于 2013-10-26T19:51:46.697 回答
1

使用struct模块将位和字节打包成字符串,然后将其写入文件。

于 2013-10-26T18:20:40.613 回答