`

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) 和长度标识字节。

该文档转自:http://blog.csdn.net/zhangxinrun/article/details/5711307
分享到:
评论

相关推荐

    Gzip Zlib PNG 压缩算法

    PNG 压缩算法的实现与 Gzip 压缩算法相似,都是基于 deflate 算法的。 Zlib 压缩算法 Zlib 压缩算法也基于 deflate 算法,是一种通用的压缩算法,广泛应用于各种领域。 结论 Gzip Zlib PNG 压缩算法是基于 ...

    Nodejs关于gzip deflate压缩详解.docx

    压缩算法有多种,如 gzip、deflate 等。本文将介绍 Nodejs 中关于 gzip deflate 压缩的两种方法:管道压缩和非管道压缩。 管道压缩 在 Nodejs 中,I/O 操作是异步的,需要通过回调函数来读取数据。当内存中无法一...

    gzip源码,gzip压缩算法

    gzip源码分析与GZIP压缩算法详解 在深入探讨gzip源码和其压缩算法之前,首先需要理解GZIP是什么。GZIP是一种广泛使用的数据压缩格式,主要用于文件传输和存储。它基于DEFLATE算法,该算法结合了LZ77(一种字典压缩...

    C#实现页面GZip或Deflate压缩的方法

    它们分别用于实现GZip和Deflate压缩算法。GZip是一种更常见的压缩格式,兼容性较好,而Deflate则是一种基础的压缩算法,通常与ZLib库一起使用。 要实现C#页面的GZip或Deflate压缩,我们需要在HTTP请求处理管道中...

    含有zip.lzw.gzip等多种压缩算法的程序

    它采用的是DEFLATE压缩算法,该算法结合了LZ77(一种字典压缩方法)和霍夫曼编码,通过查找重复的数据模式并用更短的代码表示它们来实现数据压缩。zip文件格式不仅支持单一文件的压缩,还能打包多个文件和目录,形成...

    Gzip压缩算法源码

    Gzip压缩算法是一种广泛使用的数据压缩格式,常用于文件传输和网络通信中,以减小文件的存储空间和传输时间。Gzip是基于DEFLATE算法的,它结合了LZ77(一种字典编码)和霍夫曼编码(Huffman Coding),实现了高效的...

    利用JAVASCRIPT即你想那个GZIP压缩与解压缩

    `deflate`通常指DEFLATE压缩算法,而`inflate`则对应解压缩的过程。这些文件可能是包含压缩或解压缩代码的文本文件,或者是用来测试压缩和解压缩功能的数据文件。 在实际开发中,我们可能会遇到以下应用场景: - *...

    C语言编写的GZIP压缩算法(含工程文件,附带测试程序)

    C语言编写的GZIP压缩算法是一项基础而重要的技术,它涉及到数据压缩、文件处理和程序设计等多个领域。GZIP是一种广泛使用的数据压缩格式,由GNU项目开发,主要用于减少文件大小,便于存储和传输。在本项目中,我们有...

    通过Java测试几种压缩算法的性能(附测试代码下载)

    实验中涉及了JDK内置的GZIP和Deflate算法,以及LZ4和Snappy这两种高效的第三方压缩算法。这些测试对于理解不同压缩算法在实际应用中的表现具有重要的参考价值。 首先,JDK GZIP算法是一种压缩比较高的压缩方法,但...

    GZIP.zip_22utime_Deflate_gzip_gzip压缩_zip

    文件中给出了 gzip主要压缩算法 实现包括 gzip zip deflate 等程序

    pako gzip 压缩和解压缩(支持中文)

    pako是一个高效的JavaScript库,提供了对多种压缩算法的支持,包括gzip。在本项目中,我们将关注如何使用pako库进行gzip压缩和解压缩,并解决在处理中英文内容时可能出现的乱码问题。 首先,让我们详细了解pako库。...

    几种能用于小ram单片机的压缩算法.7z

    minizlo实现了DEFLATE压缩算法,这是zip和gzip等格式的基础。它具有较低的内存需求和较快的压缩与解压速度,适合作为小RAM环境下的选择。 2. **QuickLZ**:QuickLZ是一款快速、轻量级的压缩库,提供了1级、2级和3级...

    gzip.rar_C gzip源码_c语言gzip_gzip压缩_gzip解压_poetryfem

    同时,这对于那些想要自定义压缩算法或在嵌入式系统上实现轻量级压缩的开发者来说尤其有价值。通过对gzip源码的分析,我们可以学习到如何在有限的资源下优化代码性能,以及如何处理错误和异常情况。

    各种压缩算法源码

    DEFLATE是ZIP和GZIP等格式中使用的核心压缩算法,它结合了LZ77滑动窗口匹配和霍夫曼编码。LZ77寻找数据流中的最长匹配字符串,而霍夫曼编码则根据字符串的出现频率分配不同的位长度,实现高效压缩。 5. **其他可能...

    GZIP压缩算法文档及实例

    GZIP压缩算法是一种广泛应用于数据压缩的标准,尤其在互联网传输中极为常见。它基于DEFLATE算法,而DEFLATE算法则是LZ77(Lempel-Ziv-Storer-Szymanski)算法和霍夫曼编码(Huffman Coding)的结合。本压缩包提供了...

    Nodejs关于gzip/deflate压缩详解

    在Node.js中,gzip和deflate是两种常用的压缩算法,用于减小HTTP传输的数据体积,提高网络性能。本文将详细讲解这两种压缩方法在Node.js环境下的应用,包括管道压缩和非管道压缩。 0x01. 压缩背景与必要性 在HTTP...

    EasyCompressor::high_voltage:一个压缩库,实现了许多压缩算法,例如LZ4,Zstd,LZMA,Snappy,Brotli,GZip和Deflate。 通过减少用于缓存的内存使用和网络流量,它可以帮助您提高性能。

    EasyCompressor 一个压缩库,可实现许多压缩算法,例如LZ4,Zstd,LZMA,Snappy,Brotli,GZip和Deflate 。 它通过减少用于缓存的内存使用量和网络流量来帮助您提高性能。Nuget软件包包裹名字版本描述 包含GZip,...

    STM32移植gzip

    gzip算法基于DEFLATE压缩算法,DEFLATE结合了LZ77的无损数据压缩算法和霍夫曼编码,能有效压缩数据。在STM32上实现gzip,需要编写C语言代码来调用gzip库,如zlib库,这个库包含了gzip的实现。在STM32上移植gzip,...

    各类压缩算法聚合

    在IT行业中,压缩算法是数据处理和存储领域的重要组成部分,特别是在大数据传输和存储效率方面起着关键作用。本文将深入探讨“压缩算法 集合 java”这一主题,结合Java编程语言,阐述压缩算法的基本原理、常用算法...

Global site tag (gtag.js) - Google Analytics