关于 gzip, deflate, zlib, LZ77

LZ77: 是一种基于字典的无损数据压缩算法(还有 LZ78, LZW 等)

deflate: 也是一种数据压缩算法,实际上就是先用 LZ77 压缩,然后用霍夫曼编码压缩

gzip: 是一种文件结构,也可以算一种压缩格式,通过 defalte 算法压缩数据,然后加上文件头和CRC校验

zlib: 是一个提供了 deflate, zlib, gzip 压缩方法的函数库;也是一种压缩格式(用 deflate 压缩数据,然后加上 zlib 头和 CRC 校验)

PHP 中的 zlib 扩展提供了对以上压缩格式的支持,其中的函数和压缩格式的对应关系如下:

gzdeflate, gzinflate 对应 deflate

gzcompress, gzuncompress 对应 zlib 格式压缩

gzencode, gzdecode 对应 gzip 格式压缩

Python 中的 zlib 模块也提供了上述压缩格式的支持,不过接口很“隐晦”:

zlib.compress  对数据进行 zlib 格式压缩,好像压缩的时候只支持这一种格式,不过你可以通过把压缩后的数据去掉两字节 zlib 头和末尾 4 字节的 CRC 校验得到 deflate 格式的压缩数据(zlib_compressed[2:-4]);对于 gzip 压缩格式可以通过 gzip 模块得到。

zlib.decompress(string[,wbits[,bufsize]]) 解压更折腾,压缩格式是通过 wbits 参数控制的:

  • [8, 15]:解压 zlib 格式的数据
  • [-8, -15]:解压 deflate 格式数据
  • [16, 30]:解压 gzip 格式数据

另外,对于 Apache 的页面压缩:

Content-Encoding: gzip 对应 gzip 格式压缩

Cotent-Encoding: deflate 对应  deflate 压缩

转载于:https://my.oschina.net/u/658658/blog/306777

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值