php - 将压缩文件的 gzip header 替换为 zlib header

标签 php compression gzip zlib

我知道我可以使用 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/

相关文章:

php - UTF-8 问题 PHP/MySQL

php - Wordpress get_terms 为自定义分类法返回空数组

iis-7 - 将各种文件类型添加到我的 IIS7 GZip 压缩中

android - Android 上的数据压缩(java.util.zip 除外?)

java - Dropwizard 解压缩请求过滤器

php - fatal error : Class 'adLDAP' not found

java - elgg网络服务客户端

apache - 为什么我不应该压缩 HTTP header 中的图像?

java - 为什么我的解压包不包含最后一个字节

python - Objective-C 将 NSData 压缩为 Python gzip 字符串?