用zlib头替换compresed文件的gzip头

时间:2016-02-26 22:57:43

标签: php compression gzip zlib

我知道我可以使用PHP进行压缩

gzcompress($contents, 9);

但我不喜欢结果。即使使用zlib的最后一个版本,我也会获得7zip输出的更大文件(当然是deflate)。

那么如何用zlib头文件替换gzip头文件(使用ADLER32校验和)

1 个答案:

答案 0 :(得分:1)

您的问题不明确,但我认为您正在询问如何获取7zip的gzip输出并将其转换为zlib。

您需要解码gzip标头并将其剥离。 (它可能是10个字节,但如果它有文件名则可能更长。)RFC 1952描述标题格式。然后你会添加一个双字节的zlib头,例如0x78 0xda。

然后从末尾剥去最后八个字节,并以big-endian顺序附加一个四字节Adler-32和未压缩数据的总和。您需要自己计算,RFC 1950中描述的位置,或者您可以调整zlib implementation