VisualC ++ в памяти Uncompression - PullRequest
0 голосов
/ 06 декабря 2011

У меня есть переменная "stringstream", которая хранит сжатые двоичные данные в формате gzip.

Я хочу распаковать эту переменную stringstream в памяти.

Прежде всего, для оперативной памятираспаковка двоичных данных в формате gzip, какую стороннюю библиотеку вы предлагаете использовать?

Я заметил библиотеку zlib для сжатия / распаковки форматов gzip и deflate.

Однако, две функции обрабатываютраспаковка, предоставляемая zlip, кажется, не совсем соответствует моим потребностям:

int uncompress (Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen); 

int gzread (gzFile file, voidp buf, unsigned len);

Первая (распаковка) требует, чтобы я заранее знал длину распакованных данных, чтобы правильно выделить достаточно памяти для хранения.В моем случае это неизвестно.

С другой стороны, второй (gzread) принимает файл как ввод, а не буфер памяти.

Что вы предлагаете для "эффективного""распаковка в памяти с использованием zlip или другой библиотеки?

Спасибо.

1 Ответ

0 голосов
/ 06 декабря 2011

Похоже, что в библиотеке Boost есть некоторые декомпрессионные фильтры для gzip, на это стоит обратить внимание:

http://www.boost.org/doc/libs/1_48_0/libs/iostreams/doc/classes/gzip.html

...