2014-12-21 16 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操縱它,然後寫回來。