Python中的位和文件

时间:2013-10-26 18:16:25

标签: python

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

bit + first two bytes + bit + last two bytes

添加的位只是标志。我怎样才能在python中使用(仅使用内置函数),使新文件只有5个字节(2位+ 4字节〜= 5个字节)。

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

编辑:我能够使用bitarray python库解决此问题。该模块支持完成我想要的所有工作:

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

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

2 个答案:

答案 0 :(得分:2)

您应该使用bit wise运算符

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

答案 1 :(得分:1)

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