gzip是一种数据格式,deflate是一种压缩算法

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 是最基础的算法,gzip 在 deflate 的 raw data 前增加了 10 个字节的 gzheader,尾部添加了 8 个字节的校验字节(可选 crc32 和 adler32) 和长度标识字节。

时间: 2024-10-25 18:08:16

gzip是一种数据格式,deflate是一种压缩算法的相关文章

ArcGIS几种数据格式

举个例子,大家使用那么长时间的Txt和Doc文件格式,也没有去考究他们有什么区别和联系,对于学习ArcGIS中出现的这么多数据格式也不需要过多的考虑,只要对他们的一些基本应用有所了解就可以了: Shapefile:一种基于文件方式存储GIS数据的文件格式.至少由.shp,.dbf,.shx三个文件作成,分别存储空间,属性和前两者的关系.是GIS中比较通用的一种数据格式. Coverage:一种拓扑数据结构,一般的GIS原理书中都有它的原理论述.数据结构复杂,属性缺省存储在Info表中.目前Arc

UserView--第二种方式(避免第一种方式Set饱和),基于Spark算子的java代码实现

UserView--第二种方式(避免第一种方式Set饱和),基于Spark算子的java代码实现 测试数据 java代码 1 package com.hzf.spark.study; 2 3 import java.util.Map; 4 import java.util.Set; 5 6 import org.apache.spark.SparkConf; 7 import org.apache.spark.api.java.JavaPairRDD; 8 import org.apache.s

如果40岁了还在写代码,是一种幸福,还是一种悲哀?

今天突然想到一个问题:如果40岁了还在写代码,是怎样的状态? 然后搜了一下,果然已经有人想到了,我们先来看看知乎的神人回答. 曾经有网友在知乎提问:"如果 40 岁了还在写代码,是一种幸福,还是一种悲哀?请考虑国情,别老拿外国作比方." 下面是其他一些知乎网友的回复: 马上就 40 了,依然在写代码,写各种代码,从C/C++写到 object-c,从 java 写到 lua,乐在其中,享受得很. 当然,我现在基本不是依靠写代码挣钱谋生,事实上,我也几乎也没有纯粹依赖过写代码谋生过.写代

世界上有10种人,一种懂二进制,一种不懂。那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么? 输入例子: 1999 2299 输出例子: 7

这是小米2015年暑假实习生第一道笔试题,其实不难,主要用到移位操作和或运算符就可以搞定,具体代码如下: /*世界上有10种人,一种懂二进制,一种不懂.那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么? 输入例子: 1999 2299 输出例子: 7 */ #include<stdio.h> int countBitDiff(int m, int n) { int data=1; int a,b; int count=0; for(int i=0;i<31;i+

要做到业务精,必须树立三种理念,提升五种能力。

要做到业务精,必须树立三种理念,提升五种能力. a.树立思路决定出路的理念.随着组织工作职能的不断延伸扩展,迫切需要我们跳出"就组织工作抓组织工作"的思维模式,致力在观念上实现5个转变,即从"管理者"向"服务者".从"神秘"向"公开".从"党员干部"向"更广泛服务群体".从"单兵作战"向"部门联合".从"注重政治效益&

播下一个行动,收获一种习惯;播下一种习惯,收获一种性格;

播下一个行动,收获一种习惯:播下一种习惯,收获一种性格:播下一种性格,收获一种命运.思想会变成语言,语言会变成行动,行动会变成习惯,习惯会变成性格.性格会影响人生! 习惯不加以抑制,会变成生活的必需品,不良的习惯随时改变人生走向.人往往难以改变习惯,因为造习惯的就是自己,结果人又成为习惯的奴隶! 人生重要的不是你从哪里来,而是你到哪里去.当你在埋头工作的时侯,一定要抬头看看你去的方向.方向不对,努力白费! 你来自何处并不重要,重要的是你要去往何方,人生最重要的不是所站的位置,而是所去的方向.人只

数据事务四种隔离机制和七种传播行为

一.隔离级别: 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted.Read committed.Repeatable read.Serializable,这四个级别可以逐个解决脏读.不可重复读.幻读这几类问题. 1. ISOLATION_READ_UNCOMMITTED:这是事务最低的隔离级别,它充许令外一个事务可以看到这个事务未提交的数据.      这种隔离级别会产生脏读,不可重复读和幻像读.2. ISOLATION_READ_COMMITTED:保证一个事务修改的

成长是一种经历成熟是一种阅历.

成长是一种经历成熟是一种阅历. 成长是一种经历,成熟是一种阅历.每个人都能会成长,但不是每个人都会成熟.成熟的人,不为得而狂喜,不为失而痛悲,竭心尽力之后,坦然接受而已,.成熟的人,不因功成名就而目中无人,也不因籍籍无名而卑躬屈膝,持一颗平淡的心,不卑不亢地生活.成熟的人,能够担当,懂得感恩,心静气和,淡定从容,. 在生活中你想获得什么,你就得先付出什么.你想获得时间,你就得先付出时间,你想获得金钱,你得先付出金钱.你想得到爱好,你得先牺牲爱好.你想和家人有更多的时间在一起,你先得和家人少在一起

每个程序员都应牢记的7种坏味道,11种原则,23种模式

(一)7种设计坏味道 1.僵化性: 很难对系统进行改动,因为每个改动都会迫使许多对系统其他部分的其它改动. 2.脆弱性: 对系统的改动会导致系统中和改动的地方在概念上无关的许多地方出现问题. 3.牢固性: 很难解开系统的纠结,使之成为一些可在其他系统中重用的组件. 4.粘滞性: 做正确的事情比做错误的事情要困难. 5.复杂性(不必要的): 设计中包含有不具任何直接好处的基础结构. 6.重复性(不必要的): 设计中包含有重复的结构,而该重复的结构本可以使用单一的抽象进行统一. 7.晦涩性: 很难阅