我正在为学习目的而编写一个解压缩GZIP文件的C程序.
根据GZIP 规范
gzip文件由一系列"成员"(压缩数据集)组成.每个成员的格式在以下部分中指定.成员只是在文件中一个接一个地出现,在它们之前,之间或之后没有其他信息.
一个成员由标题组成(可能带有可选字段,具体取决于某些标志值),一些压缩块(使用deflate算法),最后是CRC32和原始未压缩文件的大小.
我有两个问题:
这种情况并不常见,但有时您会在单个文件中看到串联的gzip流.gzip认为这是一个单一的数据流,而不是多个"文件",因此忽略了文件名.
如果通过"如何划分最后一个块"表示最后一个收缩块,则最后一个收缩块在其标题中只有一个位,将其标记为最后一个块.最后的deflate块之后是crc和未压缩的长度(模2 ^ 32).