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

时间:2014-12-21 12:44:21

标签: c encoding decoding entropy

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

提前致谢!

1 个答案:

答案 0 :(得分:5)

您无法将单个位写入文件,分辨率为单字节。

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

如果你想更改个别位,你必须读取一个字节,用bitwise operations来操作它,然后把它写回来。