我用霍夫曼編碼壓縮了一個二進制文件。現在我正在努力尋找壓縮效率。如何使用霍夫曼編碼找到壓縮效率?
在我的二進制文件中,我有符號(0 & 1的buch)和頻率(符號的重複)。 假設我有:
- 符號:0 FREQ:173
- 符號:1頻率:50
- 符號:2頻率:48
- 符號:3頻率:45
目前每個符號都是在UInt64中編碼的,所以如果我的計算方法是正確的話,文件的大小應該是(173 + 50 + 48 + 45)* 8 = 2528字節。如果我錯了,請糾正我。在調試時我得到了2536,另外8我不知道爲什麼?
壓縮後我被編碼這樣
- 符號:0碼:1
- 符號:1代碼:00
- 符號:2代碼:011
- 符號:3編碼:010
請問有人能告訴我如何使用這些信息來獲得這個二進制文件的哈夫曼壓縮?我試圖在谷歌上搜索,但沒有二進制文件的樣本,他們有一些浮點類型的頻率,我無法理解如何將它們與我的二進制文件相關聯。
霍夫曼實現在C++中的一個例子,如果它有幫助(包括doc):https://github.com/barakman/Huffman –