zlib - 压缩/解压缩库
概要
[有关完整描述,请参阅 zlib.h]
描述
zlib 库是一个通用的数据压缩库。 该代码是线程安全的,假设所使用的标准库函数也是线程安全的,例如内存分配例程。 它提供内存中的压缩和解压缩函数,包括对解压缩数据的完整性检查。 此版本的库仅支持一种压缩方法(deflate),但以后可能会添加其他算法,并使用相同的流接口。
如果缓冲区足够大,则可以分一步完成压缩;或者,可以通过重复调用压缩函数来完成。 在后一种情况下,应用程序必须在每次调用之前提供更多输入和/或消耗输出(提供更多输出空间)。
该库还支持使用与 stdio 类似的接口来读取和写入 gzip(1) (.gz) 格式的文件。
该库不会安装任何信号处理程序。 解码器会检查压缩数据的完整性,因此即使在输入数据损坏的情况下,该库也不应崩溃。
压缩库的所有函数都记录在文件中 zlib.h。 分发源代码包括在文件中 test/example.c 和 test/minigzip.c 中使用该库的示例,以及 examples/ 目录中的其他示例。
此版本的更改记录在附带源代码的 ChangeLog 文件中。
zlib 包含在许多语言和操作系统中,包括但不限于 Java、Python、.NET、PHP、Perl、Ruby、Swift 和 Go。
一个实验包,用于读取和写入 .zip 格式的文件,该包由 Gilles Vollant (_) 编写,并建立在 zlib 之上,可在以下网址获得:
http://www.winimage.com/zLibDll/minizip.html,以及主 zlib 源代码发行版中的 contrib/minizip 目录。
参见
zlib 网站可在以下网址找到:
http://zlib.net/
zlib 库使用的数据格式由 RFC(请求注释)1950 到 1952 描述,具体文件如下:
http://tools.ietf.org/html/rfc1950(用于 zlib 标头和尾部格式)
http://tools.ietf.org/html/rfc1951(用于 deflate 压缩数据格式)
http://tools.ietf.org/html/rfc1952(用于 gzip 标头和尾部格式)
Mark Nelson 为 1997 年 1 月版的 Dr. Dobb's Journal 撰写了一篇关于 zlib 的文章;文章的副本可在以下网址找到:
http://marknelson.us/1997/01/01/zlib-engine/
报告问题
在报告问题之前,请检查 zlib 网站,以验证您是否拥有最新版本的 zlib;否则,请获取最新版本,并查看问题是否仍然存在。 请阅读 zlib FAQ:
http://zlib.net/zlib_faq.html
在寻求帮助之前,请查看。将问题和/或评论发送到\_,或(对于 Windows DLL 版本)发送到 Gilles Vollant(\_)。
作者和许可
版本 1.3.1
版权所有,1995-2024 Jean-loup Gailly 和 Mark Adler
本软件按“原样”提供,不提供任何明示或暗示的保证。在任何情况下,作者不对因使用本软件而产生的任何损害承担责任。
允许任何人出于任何目的使用本软件,包括商业用途,并且可以对其进行修改和自由分发,但需遵守以下限制:
不得歪曲本软件的来源;您不得声称您编写了原始软件。如果您在产品中使用此软件,则在产品文档中进行致谢将不胜感激,但这不是必需的。
修改后的源代码版本必须明确标记,并且不得被冒充为原始软件。
不得从任何源代码发行版中删除或更改此通知。
Jean-loup Gailly Mark Adler _ _
zlib 中使用的 deflate 格式由 Phil Katz 定义。deflate 和 zlib 规范由 L. Peter Deutsch 编写。感谢所有报告 zlib 中问题并提出各种改进建议的人;他们太多,无法一一列举。
UNIX 手册页由 R. P. C. Rodgers 编写,美国国家医学图书馆(_)。