我正在为学习目的编写一个解压缩 GZIP 文件的 C 程序。
根据 GZIP规范
gzip 文件由一系列“成员”(压缩数据集)组成。每个成员的格式在下一节中指定。成员只是在文件中一个接一个地出现,在它们之前、之间或之后没有其他信息。
一个成员由一个标题(可能带有取决于某些标志值的可选字段)、一些压缩块(使用 deflate 算法)和最后一个 CRC32 和原始未压缩文件的大小组成。
我有两个问题:
- 如何划分成员?实际上,一个 gzip 文件中真的有多个成员吗?似乎一个成员对应一个文件(例如文件名标题)
- 如何分隔预告片的最后一个块(CRC + SIZE)?