标签: jzlib

如何计算用于 deflate 压缩的良好预设字典

我有机会预设字典以进行 deflate 压缩。这对我来说是有意义的,因为要压缩的数据相对较小,为 1kb-3kb,而且我有大量代表性示例。要压缩的数据由任意字节序列组成,因此标记化等不是一个好方法。此外,数据显示大量重复(数据示例之间),因此好的字典可能会给出非常好的结果。问题是如何算出好的字典呢?是否有一种算法可以计算最佳字典(给定样本数据)?

我开始研究前缀树,但不清楚如何在这种情况下使用它们。

最好的问候,贾里克

compression gzip zlib deflate jzlib

5
推荐指数
1
解决办法
1888
查看次数

Android InflaterInputStream是否与流行的ZLIB Windows库相同?

我试图解压缩使用Jean-loup Gailly在20世纪90年代编写的ZLIB库压缩的数据.我认为它是一个受欢迎的库(我看到很多程序都提供了它使用的zlib32.dll文件)所以我希望有人能够熟悉它来帮助我.我正在使用的是compress()函数,我从中读到了使用rfc-1951 DEFLATE格式.

这是我用来从流中读取一些压缩数据并解压缩的代码段:

InputStream is = new ByteArrayInputStream(buf);

//GZIPInputStream gzis = new GZIPInputStream(is);

InflaterInputStream iis = new InflaterInputStream(is);

byte[] buf2 = new byte[uncompressedDataLength];

iis.read(buf2);
Run Code Online (Sandbox Code Playgroud)

iis.read(buf2)函数抛出"数据格式错误"的内部异常.我也试过使用GZIPInputStream,但这也引发了同样的异常.

"buf"变量是byte []类型,我通过调试确认它与我的C程序从ZLIB compress()函数返回的内容相同(实际数据来自服务器上的TCP)."uncompressedDataLength"是C程序(服务器)也提供的未压缩数据的已知大小.

有没有人尝试使用这个库读/写数据,然后使用Java在Android上读/写相同的数据?

我确实在一些地方找到了一个"ZLIB的纯Java端口",如果我需要,我可以试试,但我宁愿使用内置/ OS功能,如果可能的话.

java android zlib deflate jzlib

4
推荐指数
1
解决办法
2325
查看次数

标签 统计

deflate ×2

jzlib ×2

zlib ×2

android ×1

compression ×1

gzip ×1

java ×1