在Ruby中,我有一个缓冲区,其中包含使用zlib compress2()
方法压缩的数据。但是,我发现没有办法使用Ruby标准库中的Zlib功能来解压缩数据,该功能仅支持由deflate
创建的数据或GZip格式的数据。Ruby:解压缩zlib包裹的deflate数据
如何才能在Ruby中实现相当于uncompress()
,最好不诉诸创建自定义C扩展?
编辑:
我找到了解决方案。经过window_bits
构造函数的参数摆脱Inflate
构造函数没有成功之后,我终于明白,zlib以四字节标题为压缩数据前缀。因此,我简单地除去该标头和突然它像一个魅力:
data[0..3] = ''
data = Zlib::Inflate.inflate(data)
感谢您确认它确实支持。我无法让'Inflate'类在没有修改我的输入数据的情况下工作,但知道它应该工作真的很有帮助:) –