我正在尝试使用使用静态/预设字典gzip的 DEFLATE 算法编码的数据创建有效的 gzip 文件(可以使用标准 linux 解压缩) 。
我已经阅读了DEFLATE和gzip的规范,看起来这是不可能的。正如我从 DEFLATE 规范中得到的,压缩数据块有两种编码类型:
FDICT标志设置为 的标头开头0。FDICT = 1但我发现没有办法实际将这样的字典写入文件。是否可以在我的字典中添加一些标头,或者以其他方式使 gzip 解压缩用 编码的数据FDICT = 1?
PS 我正在尝试使用 Java 的Deflate类来完成它,但对以这种方式压缩的块的实际 gzip 支持感兴趣。
您混淆了两个不同的概念,所以我不确定您在谈论哪个。
有些 deflate 块使用静态霍夫曼代码,通常在压缩非常少量的数据时使用。通常使用动态霍夫曼代码,其中针对该特定块优化的代码在块的开头发送。对于少量数据,例如 100 字节,代码描述的开销将主导输出的大小。相反,将使用静态代码,这可以避免以较少压缩为代价的开销。但总体而言,结果较小。所有 deflate 应用程序(gzip、zlib、png 等)都支持所有 deflate 块类型。
另一个概念是预定义字典,它是预加载滑动字典的 32K 数据块,在滑动字典中搜索匹配的字符串。只有 zlib 支持。无法为 gzip 流提供预定义的字典。您的“deflate”链接实际上是指向 zlib 格式的链接,这是定义 FDICT 的地方。
| 归档时间: |
|
| 查看次数: |
1301 次 |
| 最近记录: |