在 Ruby 中,我有一个缓冲区,其中包含使用 zlibcompress2()
方法压缩的数据。但是,我发现无法使用 Ruby 标准库中的 Zlib 功能解压缩此数据,该标准库仅支持由deflate
GZip 格式创建的数据或数据。
如何uncompress()
在 Ruby 中实现等价物,最好不求助于创建自定义 C 扩展?
编辑:
我找到了解决方案。在摆弄构造函数的window_bits
参数Inflate
没有成功之后,我终于明白zlib在压缩数据前加上了一个四字节的标题。所以我只是删除了那个标题,突然它就像一个魅力:
data[0..3] = ''
data = Zlib::Inflate.inflate(data)