2014-12-21 19 views
1

我在编写熵编码算法,我想将单个位(如编码字符)写入文件。例如,我想将011写入一个文件,但如果将它存储为字符,它将占用3个字节而不是3个位。所以我的最后一个问题是:我怎样才能将单个位写入文件?如何将单个位写入C中的文件

提前致谢!

+0

你不能。你必须至少写一个字节。 –

回答

4

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

如果要按顺序写入位,必须将它们批量写入,直到完整字节为止,然后写入该位。伪代码(尽管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操纵它,然后写回来。