在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'類在沒有修改我的輸入數據的情況下工作,但知道它應該工作真的很有幫助:) –