假设我有一个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
模块获得类似的结果。
答案 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
模块将位和字节打包成字符串,然后将其写入文件。