2016-02-26 26 views
0

我知道我可以壓縮使用PHP與zlib的頭替換compresed文件的gzip的頭

gzcompress($contents, 9); 

但我不喜歡的結果。即使使用zlib的最新版本,我也會得到更大的文件,即7zip的輸出(當然是放氣)。

因此,如何更換zlib的頭(帶Adler32校驗)

回答

1

你的問題不太清楚,但我想你問如何採取7zip的的gzip的輸出,並將其轉換爲zlib gzip的頭。

您需要解碼gzip頭並將其去掉。 (這可能是10個字節,但如果其中包含文件名,則可能會更長。)RFC 1952描述了標頭格式。然後你會預先安排一個雙字節的zlib標題,例如0x78 0xda。

然後從最後剝去最後八個字節,並以大端順序追加未壓縮數據的四字節Adler-32總和。您需要自己計算一下,在RFC 1950中描述,或者您可以修改zlib implementation