我的問題是具體的。我可以看到霍夫曼編碼理論很容易理解。但是,它似乎創建通常不與字節邊界對齊的代碼。減輕這個特定問題的實用方法並沒有在我所遇到的教程中討論過。霍夫曼編碼表是如何在實踐中建立的?
有兩個問題:
(1)一旦一個文件被編碼,文件的生成的霍夫曼碼文件的結束可能不會在字節邊界對齊。我們如何知道我們已經在壓縮文件中結束了哈夫曼編碼數據?
(2)假如文件中包含一個huffman表來幫助解壓縮,那麼在實際中如何創建這樣一個表,因爲我們再次遇到了與字節邊界的非對齊問題?符號本身可能是8位或16位。但是,霍夫曼碼可以是任意數量的比特。現在,如果我們爲每個代碼包含一個huffman代碼,我們還必須包含它的位數,因此解碼器可以使用huffman表創建二叉樹或其他數據結構來幫助解壓縮。
霍夫曼和算術編碼似乎被用於很多壓縮系統,因此這個問題不斷涌現。
我想了解這是如何在JPEG中完成的,並且將在FPGA中使用Nios II軟核處理器在C中構建編碼器,以保存來自相機的SD卡中的JPEG文件。
我不明白這與[tag:c]有什麼關係,具體而言。據我所知,霍夫曼編碼是語言不可知的。 –
EOF總是通過使用填充進行字節對齊,當流從字節邊界結束時總是需要填充(否則將解析具有任意值的額外位)。 – Myst
但是如何知道填充從哪裏開始? – quantum231