3

在 Ruby 中,我有一个缓冲区,其中包含使用 zlibcompress2()方法压缩的数据。但是,我发现无法使用 Ruby 标准库中的 Zlib 功能解压缩此数据,该标准库仅支持由deflateGZip 格式创建的数据或数据。

如何uncompress()在 Ruby 中实现等价物,最好不求助于创建自定义 C 扩展?

编辑:

我找到了解决方案。在摆弄构造函数的window_bits参数Inflate没有成功之后,我终于明白zlib在压缩数据前加上了一个四字节的标题。所以我只是删除了那个标题,突然它就像一个魅力:

  data[0..3] = ''
  data = Zlib::Inflate.inflate(data)
4

2 回答 2

2

您需要使用负值,如此window_bits所述。我遇到过类似的问题,但在 Ruby 上压缩和在 JS 上解压缩(我的要点)。希望它有助于避免四口的魔法:)

于 2014-11-21T12:10:22.787 回答
0

文档表明 Ruby inflate 类将解压缩 compress2() 的输出,它是 zlib 格式。我刚试了一下,效果很好。您的压缩数据可能无法完整地传递给 Ruby。

于 2013-07-21T20:00:24.063 回答