Gzip Zlib PNG 压缩算法,源码详解

出处:CSDN 2004年03月03日 作者:JIURL 责任编辑:linjixiong

文章导读:  gzip,zlib,以及图形格式png,使用的是同一个压缩算法deflate。我们通过对gzip源码的分析来对deflate压缩算法做一个详细的说明。我阅读的gzip版本为 gzip-1.2.4。我们对算法做三种程度的说明。第一种程度,对gzip所使用压缩算法基本原理的说明。第二种程度,对gzip压缩算法实现方法的说明。第三种程度,对gzip实现源码级的说明。    如果你有时间的话,我建议你

     从这个例子中我们就看到了做另外一次尝试的原因。如果碰到的一个匹配就使用了的话,可能错过更长匹配的机会。现在做两次会有所改善。      ...      2.2 问题讨论      我在这里对gzip压缩算法做出了一些说明,是希望可以和对gzip或者压缩解压缩感兴趣的朋友进行交流。   我对gzip的了解要比这里说的更多一些,也有更多的例子。如果哪位朋友愿意对下面的问题进行研究,以及其他压缩解压缩的问题进行研究,来这里http://jiurl.cosoft.org.cn/forum/ 和我交流的话,我也愿意就我知道的内容进行更多的说明。      下面是几个问题      这种匹配算法,即用3个字节(最小匹配)来计算一个整数,是否比用串比较来得高效,高效到什么程度。      哈希函数的讨论。不同的三个字节,是否可能得到同一个ins_h。ins_h和计算它的三个字节的关系。      几次延迟尝试比较好?      用延迟,两次尝试是否对压缩率的改善是非常有限的?      影响lz77压缩率的因素。      压缩的极限。        2.3 ...      3 gzip源码分析      main() 中调用函数 treat_file() 。   treat_file() 中打开文件,调用函数 zip()。注意这里的 work 的用法,这是一个函数指针。   zip() 中输出gzip文件格式的头,调用 bi_init,ct_init,lm_init,   其中在lm_init中将 head 初始化清0。初始化strstart为0。从文件中读入64KB的内容到window缓冲区中。   由于计算strstart=0时的ins_h,需要0,1,2这三个字节和哈希函数发生关系,所以在lm_init中,预读0,1两个字节,并和哈希函数发生关系。      然后lm_init调用 deflate()。   deflate() gzip的LZ77的实现主要deflate()中。   ...
察看评论详细内容 我要发表评论
作者笔名 简短内容 发表时间
:
[1] [2] [3] >>继续下一页
相关快问问题
频道精选

爱很简单!教您DIY制造浪漫

爱很简单!教您DIY制造浪漫

不花钱又能表达芳心,为对方设计情人节贺卡或者壁纸之类的,相信你的花心思制作的作品也能感动对方。...[详细]

本周十大热评文章
本周十大人气文章
壁纸图赏