如何在C中将单个位写入文件

我正在编程一个熵编码算法,我想把像编码字符这样的单个位写入文件。 例如,我想将011写入文件,但如果将其存储为字符,则需要3个字节而不是3个字节。 所以我的最后一个问题是:如何将单个位写入文件?

提前致谢!

您不能将单个位写入文件,分辨率是单个字节。

如果要按顺序写入位,则必须将它们分批,直到有完整的字节,然后写入。 Psuedo代码(虽然类似于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 

如果您想要更改单个位,则必须读取一个字节,使用按位操作来操作它,然后将其写回。