LZ77: 基于重复语句的压缩
1 什么是LZ77
1977年两个以色列人提出的基于重复语句上的通用的压缩算法--------将重复语句替换成更短的<长度, 距离, 下个字符串首字母>对的方式。 真正的LZ77用的是一个三元组(长度距离对 + 下一个语句的首字母 )
为什么叫基LZ77算法的压缩?
上边介绍了 原LZ77 的处理方式:
<长度, 距离, 下个字符串首字母> 三字节
我们发现:下个字符串的首字母对压缩目的来说没什么帮助,放大看却占了很多空间,因此 我们采用<长度, 距离>的方式
长度距离对 我们仍采用三个字节
长度 :1字节表示
距离 :2字节表示
实现思想:
要压缩文件,必然需要将待压缩文件读到程序的缓冲区中,因此我们需要在程序中维护一段缓冲区
LZ77 :缓冲区的大小 :64K
那么我们也用64K
我们将缓冲区等分为两部分:
查找缓冲区32K:
1 存放已经压缩完成的