我正在编写一个熵编码算法,希望将单个位以编码字符的形式写入文件。例如,我想要将011写入文件,但如果您将其存储为字符,则需要占用3个字节而不是3个位。那么我的最终问题是:如何将单个位写入文件?
提前感谢!
你不能将单独的位写入文件,分辨率是一个字节。
如果您想按顺序写入位,请将它们批量处理直到拥有一个完整的字节,然后再写入。伪代码(类似于C)如下:
currbyte = 0
bitcount = 0
def writeBit (bit):
currbyte = currbyte << 1 | bit
bitcount++
if bitcount == BITS_PER_BYTE:
write currbyte to file
currbyte = 0
bitcount = 0
如果您想要更改单个位元,您需要读入一个字节,使用位运算来操作它,然后将其写回。