編碼需要一些幫助來了解DEFLATE編碼如何工作。我知道這是LZSS算法和霍夫曼編碼的組合。DEFLATE利用靜態霍夫曼編碼
因此,讓編碼例如「Deflate遲到」。 Params:[Search buffer:8kb and Look-ahead buffer 4kb]那麼,LZSS算法的輸出是「Deflate < 5,4>」下一步使用靜態霍夫曼編碼來減少冗餘。這是我的問題,我不知道我應該如何編碼這對< 5,4>與霍夫曼。
將帖子
d 000
˚F001
升010
一個011
噸100
_ 101
ë11
這麼好,根據本表字符串「Deflate」被寫爲000 11 001 010 011 100 11 101.下一步讓我們編碼t他配對(5,4)。根據書籍「數據壓縮 - 完整參考」的長度4的固定前綴碼是258,隨後是距離5的固定前綴碼(碼4 + 1額外比特)。
即可以概括爲:
長度4 - > 258 - > 0000010
距離5 - > 4 + 1額外位 - > 00100 | 0
因此,經編碼的字符串被寫入作爲[header:1 01] 000 11 001 010 011 100 11 101 0000010 001000 [end-of-block:0000000],但是如果我創建了一個huffman樹,它不再是一個靜態的huffman,對吧?
好日子
既然你沒有問如何編碼的「放氣」,那麼你一定已經知道如何發出Huffman編碼這些文字。你做同樣的事情,你發出長度爲4而不是文字,然後是距離代碼5. –
所以,根據這張表,字符串「Deflate」被寫爲000 11 001 010 011 100 11 101 。下一步讓我們編碼這對(5,4)。根據書籍「數據壓縮 - 完整參考」的長度爲4的固定前綴碼是258,隨後是固定的距離爲5的前綴碼。 [總結]: 長度4 - > 258 - > 0000010 [7位] 距離5 - > 4 + 1額外位 - > 00100 | 0 因此,編碼的字符串被寫爲[標題:1 01] 000 11 001 010 011 100 11 101 0000010 001000 [end-of-block:0000000],但是如果我創建一個huffman樹,它不是一個靜態的huffman,對吧? – FewG