В Ruby у меня есть буфер, содержащий данные, сжатые с помощью метода zlib compress2()
. Однако я не нашел возможности распаковать эти данные, используя функциональность Zlib в стандартной библиотеке Ruby, которая поддерживает только данные, созданные deflate
, или данные в формате GZip.Ruby: uncompress zlib-wrapped deflate data
Как достичь эквивалента uncompress()
в Ruby, желательно, не прибегая к созданию пользовательского C-расширения?
Редактировать:
Я нашел решение. После безуспешной работы с аргументом window_bits
конструктору Inflate
я наконец понял, что zlib префикс сжатых данных четырехбайтным заголовком. Так что я просто удалены, что заголовок и вдруг он работал как шарм:
data[0..3] = ''
data = Zlib::Inflate.inflate(data)
Спасибо, что подтвердили, что она действительно поддерживается. Я не мог заставить класс «Inflate» работать без изменения моих входных данных, но было очень полезно знать, что он должен работать :) –