Skip to main content

3. 压缩算法 (Compression Algorithm)

本节描述Zstandard算法。

本文档的目的是定义一种无损压缩数据格式,该格式:a) 独立于CPU类型、操作系统、文件系统和字符集,b) 适用于文件压缩以及管道和流式压缩,使用Zstandard算法。规范文本假设具有位和其他原始数据表示级别的编程基本背景。

数据可以被生成或消费,即使对于任意长的顺序呈现的输入数据流,也仅使用预先限定数量的中间存储;因此,它可以用于数据通信。该格式使用Zstandard压缩方法和可选的xxHash-64校验和方法 [XXHASH],用于检测数据损坏。

本规范定义的数据格式不试图允许对压缩数据的随机访问。

除非下文另有说明,符合规范的压缩器必须生成符合此处所述规范的数据集。但是,它不需要支持所有选项。

符合规范的解压器必须能够解压至少一组符合此处所述规范的工作参数集。它也可以忽略信息性字段,例如校验和。当它不支持压缩流中定义的参数时,必须产生明确的错误代码和相关的错误消息,解释哪个参数不受支持。

本规范旨在供将数据压缩为Zstandard格式和/或从Zstandard格式解压数据的软件实现者使用。Zstandard格式由用可移植C语言编写的开源参考实现支持,可在 [ZSTD] 获得。

3.1. 帧 (Frames)

Zstandard压缩数据由一个或多个帧组成。每个帧都是独立的,可以独立于其他帧解压。多个连接帧的解压内容是每个帧解压内容的连接。

为Zstandard定义了两种帧格式:Zstandard帧和可跳过帧。Zstandard帧包含压缩数据,而可跳过帧包含自定义用户元数据。