GZIP压缩原理分析(23)——第五章 Deflate算法详解(五14) 动态哈夫曼编码分析(03) LZ77过程(02)
2016-07-31 11:03
766 查看
*匹配串由几个字符构成?
对于字符串“As mentioned above,there are many kinds of wireless systems other than cellular.”,
先来看第一个问题。Deflate压缩中有规定,先行缓冲区中的字符串最少要由3个连续的字符构成。放到这个例子里,字符串“re”是不行的,至少得是“re (这里有空格)”。也就是说,当先行缓冲区中的字符串至少由3个连续的字符组成并且在查找缓冲区中找到了匹配,此时先行缓冲区中的这个字符串才能用“长度+距离”对儿替换。长度距离对儿是个二元组,要由两个数组成。如果对单个字符用长度距离对儿替换,那还不如不替换;如果对两个连续字符用长度距离对儿替换,那是否替换又有什么关系,反正替换前后都要用两个数(字符其实也是个数)。所以,能够替换的前提就是字符串至少要由3个位于先行缓冲区中的连续字符组成,而且还必须以先行缓冲区中第一个字节为开始。
压缩过程是逐字节依次进行的,字符串的组成过程举例如下,有字符串“abcdefghijklm”。当先行缓冲区第一个字符为“a”时,以它为起始,由连续的三个字符组成的字符串就是“abc”;接着当先行缓冲区第一个字符为“b”时,对应的字符串是“bcd”;接着当先行缓冲区第一个字符为“c”时,对应的字符串就是“cde”……当先行缓冲区的第一个字符是“k”时,对应的字符串就是“klm”;以上这些字符串都有资格在查找缓冲区中寻找匹配串。当先行缓冲区第一个字节走到“l”的位置时,由于连续字符数不够三个,所以没资格在查找缓冲区中寻找匹配串,“m”就更别提了。当然,有的字符可能没有机会当先行缓冲区的第一个字符,因为它所在的字符串很可能已经被长度距离对儿替换掉了。
相关文章推荐
- GZIP压缩原理分析(22)——第五章 Deflate算法详解(五13) 动态哈夫曼编码分析(02) LZ77过程(01)
- GZIP压缩原理分析(24)——第五章 Deflate算法详解(五15) 动态哈夫曼编码分析(04) LZ77过程(03)
- GZIP压缩原理分析(25)——第五章 Deflate算法详解(五16) 动态哈夫曼编码分析(05) LZ77过程(04)
- GZIP压缩原理分析(27)——第五章 Deflate算法详解(五18) 动态哈夫曼编码分析(07) LZ77过程(06)
- GZIP压缩原理分析(26)——第五章 Deflate算法详解(五17) 动态哈夫曼编码分析(06) LZ77过程(05)
- GZIP压缩原理分析(28)——第五章 Deflate算法详解(五19) 动态哈夫曼编码分析(08) LZ77过程(07)
- GZIP压缩原理分析(30)——第五章 Deflate算法详解(五21) 动态哈夫曼编码分析(10)构建哈夫曼树(02)
- GZIP压缩原理分析(31)——第五章 Deflate算法详解(五22) 动态哈夫曼编码分析(11)构建哈夫曼树(03)
- GZIP压缩原理分析(29)——第五章 Deflate算法详解(五20) 动态哈夫曼编码分析(09)构建哈夫曼树(01)
- GZIP压缩原理分析(18)——第五章 Deflate算法详解(五09) 算法分析(03) 格式说明(02) 存储类型
- GZIP压缩原理分析(14)——第五章 Deflate算法详解(五05) 预备知识(04) 前缀码、原始哈夫曼编码原理以及deflate所用哈夫曼编码的性质
- GZIP压缩原理分析(32)——第五章 Deflate算法详解(五23) 动态哈夫曼编码分析(12)构建哈夫曼树(04)
- GZIP压缩原理分析(20)——第五章 Deflate算法详解(五11) 算法分析(05) 格式说明(04) 动态哈夫曼编码
- GZIP压缩原理分析(21)——第五章 Deflate算法详解(五12) 动态哈夫曼编码分析(01) 本节说明
- GZIP压缩原理分析(33)——第五章 Deflate算法详解(五24) 动态哈夫曼编码分析(13)构建哈夫曼树(05)
- GZIP压缩原理分析(12)——第五章 Deflate算法详解(五03) 预备知识(02) 压缩“窗口”概念
- GZIP压缩原理分析(17)——第五章 Deflate算法详解(五08) 算法分析(02) 格式说明(01) 块首部
- GZIP压缩原理分析(13)——第五章 Deflate算法详解(五04) 预备知识(03) 游程编码
- GZIP压缩原理分析(15)——第五章 Deflate算法详解(五06) 预备知识(05) 预备知识总结
- GZIP压缩原理分析(16)——第五章 Deflate算法详解(五07) 算法分析(01) 本节概述