gpt4 book ai didi

compression - zlib、gzip 和 zip 有什么关系?它们有什么共同点,又有什么不同?

转载 作者:行者123 更新时间:2023-12-03 03:51:52 25 4
gpt4 key购买 nike

zlib 中使用的压缩算法与 gzip 和 zip 中的压缩算法基本相同。什么是 gzip 和 zip?它们有何不同,又有何相同之处?

最佳答案

简写:
.zip is an archive format通常使用 Deflate compression method . .gz gzip format用于单个文件,也使用 Deflate 压缩方法。 gzip 通常与 tar to make a compressed archive format 结合使用, .tar.gz . zlib library提供供 zip、gzip、png 使用的 Deflate 压缩和解压代码(在放气数据上使用 zlib wrapper)和许多其他应用程序。
长表:
ZIP format由 Phil Katz 开发为具有开放规范的开放格式,他的实现 PKZIP 是共享软件。它是一种存档格式,用于存储文件及其目录结构,其中每个文件都被单独压缩。文件类型为 .zip .可以选择对文件以及目录结构进行加密。
ZIP 格式支持多种压缩方法:

    0 - The file is stored (no compression)
1 - The file is Shrunk
2 - The file is Reduced with compression factor 1
3 - The file is Reduced with compression factor 2
4 - The file is Reduced with compression factor 3
5 - The file is Reduced with compression factor 4
6 - The file is Imploded
7 - Reserved for Tokenizing compression algorithm
8 - The file is Deflated
9 - Enhanced Deflating using Deflate64(tm)
10 - PKWARE Data Compression Library Imploding (old IBM TERSE)
11 - Reserved by PKWARE
12 - File is compressed using BZIP2 algorithm
13 - Reserved by PKWARE
14 - LZMA
15 - Reserved by PKWARE
16 - IBM z/OS CMPSC Compression
17 - Reserved by PKWARE
18 - File is compressed using IBM TERSE (new)
19 - IBM LZ77 z Architecture
20 - deprecated (use method 93 for zstd)
93 - Zstandard (zstd) Compression
94 - MP3 Compression
95 - XZ Compression
96 - JPEG variant
97 - WavPack compressed data
98 - PPMd version I, Rev 1
99 - AE-x encryption marker (see APPENDIX E)
方法 1 到 7 是历史方法,未使用。方法 9 到 98 是相对较新的补充,并且使用量不同,使用量很小。在 ZIP 格式中真正广泛使用的唯一方法是方法 8, Deflate ,以及在更小范围内的方法 0,它根本没有压缩。几乎每个 .zip您将在野外遇到的文件将只使用方法 8 和 0,可能只是方法 8。(方法 8 还具有一种无需压缩和相对较少扩展即可有效存储数据的方法,并且方法 0 无法流式传输,而方法8个都可以。)
ISO/IEC 21320-1:2015 standard for file containers是一种受限的 zip 格式,例如用于 Java 存档文件 (.jar)、Office Open XML 文件(Microsoft Office .docx、.xlsx、.pptx)、Office 文档格式文件(.odt、.ods、.odp),和 EPUB 文件 (.epub)。该标准将压缩方法限制为 0 和 8,以及其他限制,例如不加密或签名。
1990 年左右, Info-ZIP group编写了 zip 的可移植、免费、开源实现和 unzip实用程序,支持使用 Deflate 格式进行压缩,以及对该格式和早期格式的解压缩。这大大扩展了 .zip的用途格式。
在 90 年代初, gzip format被开发作为 Unix compress utility 的替代品,源自 Info-ZIP 实用程序中的 Deflate 代码。 Unix compress旨在压缩单个文件或流,附加 .Z到文件名。 compress使用 LZW compression algorithm ,当时正在申请专利,其免费使用受到专利持有人的争议。虽然某些 Deflate 的具体实现已获得 Phil Katz 的专利,但格式不是,因此可以编写不侵犯任何专利的 Deflate 实现。在过去的 20 多年里,这种实现并没有受到如此大的挑战。 Unix gzip实用程序旨在替代 compress ,实际上是能够解压 compress - 压缩数据(假设您能够解析该句子)。 gzip附加一个 .gz到文件名。 gzip使用 Deflate 压缩数据格式,它的压缩比 Unix 好很多 compress ,解压速度非常快,并添加了 CRC-32 作为数据的完整性检查。标题格式还允许存储比 compress 更多的信息。允许的格式,例如原始文件名和文件修改时间。
虽然 compress仅压缩单个文件,通常使用 tar实用程序将文件、它们的属性和它们的目录结构归档到单个 .tar 中。文件,然后用 compress 压缩它制作 .tar.Z文件。事实上, tar实用程序曾经并且仍然可以选择同时进行压缩,而不必通过管道传输 tar 的输出至 compress .这一切都延续到了 gzip 格式,而 tar可以选择直接压缩到 .tar.gz格式。 tar.gz格式比 .zip 压缩得更好办法,由于压缩了一个 .tar可以利用跨文件的冗余,尤其是许多小文件。 .tar.gz由于其非常高的可移植性,它是 Unix 上使用的最常见的存档格式,但也有更有效的压缩方法在使用,因此您经常会看到 .tar.bz2.tar.xz文件。
不像 .tar , .zip最后有一个中央目录,提供内容列表。那和单独的压缩提供了对 .zip 中各个条目的随机访问。文件。一个 .tar文件必须从头到尾解压缩和扫描才能建立目录,这就是 .tar文件被列出。
gzip 推出后不久,大约在 1990 年代中期,同样的专利纠纷对 .gif 的免费使用提出了质疑。图像格式,在公告板和万维网上非常广泛地使用(当时是一个新事物)。于是一小群人创建了PNG无损压缩图像格式,文件类型 .png , 替换 .gif .该格式还使用 Deflate 格式进行压缩,在图像数据上的过滤器暴露更多冗余之后应用该格式。为了促进 PNG 格式的广泛使用,创建了两个免费的代码库。 libpngzlib . libpng 处理了 PNG 格式的所有功能,zlib 提供了供 libpng 以及其他应用程序使用的压缩和解压缩代码。 zlib 改编自 gzip代码。
所有提到的专利都已过期。
zlib 库支持 Deflate 压缩和解压缩,以及围绕 deflate 流的三种包装。这些是:根本没有包装(“原始”放气), zlib wrapping ,用于 PNG 格式数据块和 gzip 包装,为程序员提供 gzip 例程。 zlib 和 gzip 包装之间的主要区别在于 zlib 包装更紧凑,6 个字节,而 gzip 最少 18 个字节,并且完整性检查 Adler-32 比 gzip 使用的 CRC-32 运行得更快。读取和写入 .zip 的程序使用原始 deflate。格式,这是另一种包装压缩数据的格式。
zlib 现在广泛用于数据传输和存储。例如,大多数服务器和浏览器的 HTTP 事务使用 zlib 压缩和解压缩数据,特别是 HTTP header Content-Encoding: deflate意味着 deflate compression method wrapped inside the zlib data format .
deflate 的不同实现可能导致相同输入数据的不同压缩输出,正如存在可选择的压缩级别所证明的那样,该级别允许权衡压缩效率与 CPU 时间。 zlib 和 PKZIP 不是 deflate 压缩和解压缩的唯一实现。两者 7-Zip archiving utility和谷歌的 zopfli library能够使用比 zlib 多得多的 CPU 时间,以便在使用 deflate 格式时尽可能挤出最后几位,与 zlib 的最高压缩级别相比,压缩大小减少了几个百分点。 pigz utility是 gzip 的并行实现,包括使用 zlib(压缩级别 1-9)或 zopfli(压缩级别 11)的选项,并且通过将大文件的压缩拆分到多个处理器和内核上,在一定程度上减轻了使用 zopfli 的时间影响。

关于compression - zlib、gzip 和 zip 有什么关系?它们有什么共同点,又有什么不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20762094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com