gzip与deflate压缩的区别
2015-08-11 08:51
246 查看
gzip是一种数据格式,默认且目前仅使用deflate算法压缩data部分;
deflate是一种压缩算法,是huffman编码的一种加强。
deflate与gzip解压的代码几乎相同,可以合成一块代码。
区别仅有:
deflate使用inflateInit(),而gzip使用inflateInit2()进行初始化,比 inflateInit()多一个参数: -MAX_WBITS,表示处理raw deflate数据。因为gzip数据中的zlib压缩数据块没有zlib header的两个字节。使用inflateInit2时要求zlib库忽略zlib header。在zlib手册中要求windowBits为8..15,但是实际上其它范围的数据有特殊作用,见zlib.h中的注释,如负数表示raw deflate。
Apache的deflate变种可能也没有zlib header,需要添加假头后处理。
即MS的错误deflate (raw deflate).zlib头第1字节一般是0x78, 第2字节与第一字节合起来的双字节应能被31整除,详见rfc1950。例如Firefox的zlib假头为0x7801,python zlib.compress()结果头部为0x789c。
deflate是一种压缩算法,是huffman编码的一种加强。
deflate与gzip解压的代码几乎相同,可以合成一块代码。
区别仅有:
deflate使用inflateInit(),而gzip使用inflateInit2()进行初始化,比 inflateInit()多一个参数: -MAX_WBITS,表示处理raw deflate数据。因为gzip数据中的zlib压缩数据块没有zlib header的两个字节。使用inflateInit2时要求zlib库忽略zlib header。在zlib手册中要求windowBits为8..15,但是实际上其它范围的数据有特殊作用,见zlib.h中的注释,如负数表示raw deflate。
Apache的deflate变种可能也没有zlib header,需要添加假头后处理。
即MS的错误deflate (raw deflate).zlib头第1字节一般是0x78, 第2字节与第一字节合起来的双字节应能被31整除,详见rfc1950。例如Firefox的zlib假头为0x7801,python zlib.compress()结果头部为0x789c。
相关文章推荐
- HDU 1052
- hdu4821 String
- [LeetCode] Spiral Matrix
- Android 第三方应用广告拦截实现
- 事物发展总会出人意料
- EasyUI集成Kindeditor使用
- UI之手势识别器 注意
- QPS 与 TPS
- Labeling Balls(POJ--3687
- Gym - 100625E Encoded Coordinates 矩阵快速幂
- 让Android Support V4中的SwipeRefreshLayout支持上拉加载更多
- 客户的客户才是你的客户
- CentOS yum No module named yum
- uva 10917 Walk Through the Forest(最短路)
- POJ 2352 Stars
- Scala中List的实现内幕源码揭秘
- Rolling Hash(Rabin-Karp算法)匹配字符串
- 二级联动下拉列表框选中值后,保存id,name值的方法
- 基于codeMirror的实时在线编辑器
- iOS之TableView左划删除与刷新单挑数据