L7ZZ圧縮アルゴリズム

LZ77圧縮アルゴリズム


LZ77是一种基于字典的算法,它将长字符串(也称为短语)编码成短小的标记,用小标记代替字典中的短语,从而达到压缩的目的。

	LZ77使用的是一个前向缓冲区和一个滑动窗口来维护字典。它首先将一部分数据载入前向缓冲区,一旦数据
中的短语通过前向缓冲区,那么它将移动到滑动窗口中,并变成字典的一部分,随着滑动窗口移动,字典中的内
容也在不断的更新,也就是说它是变更新字典,边进行压缩。

	假设字典已经建立,每读到一个字符,就向前扫描,在字典中查看是否有重复出现的短语,若搜索出有重复
出现的短语,将其编码成短语标记。短语标记由三部分组成:滑动窗口中的偏移量(从头部到匹配开始的前一个
字符)、匹配中的符号个数、匹配结束后,前向缓冲区中的第一个符号---(offset, lenght, nextChar)。当
没有找到匹配时,将未匹配的符号编码成符号标记。这个符号标记仅仅包含符号本身,没有压缩过程。一旦把n个
符号编码并生成相应的标记,就将这n个符号从滑动窗口的一端移出,并用前向缓冲区中同样数量的符号来代替它
们。然后,重新填充前向缓冲区。

次の図に示すLZ77圧縮処理、スライディングウィンドウサイズを仮定すると、バッファサイズ前方に、8バイトで4バイトである:
ここに画像を挿入説明
ここに画像を挿入説明
各マークの復号場合、マークは、スライディングウィンドウにコピーされた文字にエンコード。フレーズマーカーは、フレーズの指定した長さのためにそこにいながら、スライディングウィンドウで適切なオフセットを見つけることがあるたびに。マーク記号があるたびに、それはシンボル保存されたタグを生成します

ここに画像を挿入説明

公開された230元の記事 ウォン称賛28 ビュー9308

おすすめ

転載: blog.csdn.net/weixin_43767691/article/details/103778967