LZW基於C語言的實現

2021-08-21 07:10:05 字數 762 閱讀 6871

lzw演算法具有很多版本,其大致思想一致。主要思想是盡最大可能不產生冗餘,以自適應的方式建立乙個內部字典。

其演算法流程如下:

lzw演算法流程:

步驟1: 開始時的詞典包含所有可能的根(root),而當前字首p是空的;

步驟2: 當前字元(c) :=字元流中的下乙個字元;

步驟3: 判斷綴-符串p+c是否在詞典中

(1) 如果「是」:p := p+c // (用c擴充套件p) ;

(2) 如果「否」

① 把代表當前字首p的碼字輸出到碼字流;

② 把綴-符串p+c新增到詞典;

③ 令p := c //(現在的p僅包含乙個字元c);

步驟4: 判斷碼字流中是否還有碼字要譯

(1) 如果「是」,就返回到步驟2;

(2) 如果「否」

① 把代表當前字首p的碼字輸出到碼字流;

lzw的實現原理不是很複雜,但裡面需要處理的細節很多,是乙個提高程式設計能力的不錯選擇。

壓縮的主要**如下:

void compcode(file* ft,dic *dic)

else

} if((x=findindic(ch,dic)))

memcode(x);

fclose(ft);

fclose(fr);

}

執行結果如下:

基於xilinx FPGA實現LZW壓縮演算法

1 lzw演算法簡介 資料壓縮分為有失真壓縮和無失真壓縮。有失真壓縮是對壓縮後的資料進行重構 解壓縮 重構後的資料與原來的資料有所不同,換來了大的壓縮比。無失真壓縮指對壓縮後的資料進行重構 重構後的資料與原來的資料完全相同。這裡只介紹lzw無失真壓縮和解壓縮演算法。lzw壓縮演算法是一種通用的無失真...

用python實現的LZW演算法

以前學習了一下gif的lzw演算法,不過只是學習了一下 見我以前的那篇博文 lzw for gif演算法原理和實現 沒有實踐,也沒有看看效果到底怎麼樣,因為現在zip庫很多,基本上不需要自己寫壓縮演算法了,lzw的壓縮效果也比不上它們。不過最近有個嵌入式系統上的資料記錄需求,希望把執行過程中採集的資...

LZW編碼的學習與實現

目錄 preface encoding 基本思想 流程 實現 decoding 主要思想 流程 實現 看了一天,感覺終於搞明白了一點 終於寫對了 編碼過程大四的時候學過一點點,按部就班的按照步驟來做就行了,解碼過程貌似課堂上老師沒講,自己看wiki上的講解和example搞懂了。lzw全稱lempe...