我试图创建有效的gzip文件(可以使用标准linux解压缩gzip
),并使用带有静态/预设字典的DEFLATE算法编码的数据。
我已经阅读了DEFLATE和gzip的两个规范,看来这是不可能的。从DEFLATE规范中可以得出,压缩数据块有两种编码类型:
FDICT
设置为的标头开始0
。FDICT = 1
但是我发现没有办法将这样的字典实际写入文件。是否可以在我的字典/词典中添加一些标头,或者以其他方式使gzip解压缩使用编码的数据FDICT = 1
?
PS我正在尝试使用Java的Deflate
类来实现它,但是对以这种方式压缩的块的实际gzip支持感兴趣。
您正在混淆两个不同的概念,所以我不确定您在谈论哪个概念。
有些deflate块使用静态霍夫曼码,通常在压缩非常少量的数据时使用。通常使用动态霍夫曼码,其中针对该特定块优化的代码在该块的开头发送。对于少量数据(例如100字节),该代码描述的开销将支配输出的大小。取而代之的是,将使用静态代码,以减少压缩为代价避免了开销。但总体而言,结果较小。所有放气应用程序(gzip,zlib,png等)都支持所有放气块类型。
另一个概念是预定义的字典,它是32K数据块,可预加载滑动字典,在该字典中搜索匹配的字符串。仅zlib支持。无法为gzip流提供预定义的字典。您的“ deflate”链接实际上是指向zlib格式的链接,这是FDICT的定义位置。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句