我在想什麼是處理Huffman Copression中最後一個字節的最佳方法。我在C++中有一些很好的代碼,可以非常好地壓縮文本文件,但是現在我必須向我的編碼文件寫入一些編碼字符(呃,它等於輸入文件大小),因爲不知道如何處理最後一個字節更好。Huffman壓縮的最後一個字節
例如,要壓縮的最後一個字符是'a',該代碼是011,我剛剛開始寫入新的字節,因此最後一個字節將如下所示: 011 +某些5位垃圾,我正在製作例如最後它們爲零。 而當我編碼這個編碼文件時,可能會發生代碼00000(或用較少的零)是某些字符的代碼,所以我將在我的編碼文件的末尾有一些垃圾字符。
正如我在第一段中寫的,我通過在編碼文件中保存輸入文件的字符數來避免這種情況,並且在編碼時,我正在讀取編碼文件以達到該編號(而不是EndOfFile,不要得到這些例子5個零)。 這並不是真的有效,編碼文件的大小增加了很長的數字。
如何以更好的方式處理這個問題?
PS。對不起,我不完美的英語,我希望它有可能明白:-)
確實沒有缺點,因爲你可以證明這不會比編碼長度需要更多的位。 –
@ MarkAdler-你有參考嗎?我經常想到這一點,但我從未見過正式的證據。 – templatetypedef
我不記得我在哪裏看到那個。我會尋找它。 –