我知道我可以使用 PHP 进行压缩
gzcompress($contents, 9);
但我不喜欢这个结果。即使使用最新版本的 zlib,我也会得到比 7zip 输出更大的文件(当然是 deflate)。
如何用 zlib header (带有 ADLER32 校验和)替换 gzip header
最佳答案
您的问题不清楚,但我认为您是在问如何获取 7zip 的 gzip 输出并将其转换为 zlib。
您需要解码 gzip header 并将其剥离。 (可能是 10 个字节,但如果其中包含文件名,则可能会更长。) RFC 1952描述 header 格式。然后您将在前面添加一个两字节的 zlib header ,例如0x78 0xda。
然后从末尾剥离最后八个字节,并按大端顺序附加未压缩数据的四字节 Adler-32 总和。您需要自己计算,如 RFC 1950 中所述。 ,或者您可以调整 zlib implementation .
关于php - 将压缩文件的 gzip header 替换为 zlib header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35663267/