Получить сжатый размер встроенного zlib сжатого файла - PullRequest
0 голосов
/ 22 марта 2019

У меня есть файл, который содержит встроенный файл, сжатый с помощью zlib.

Я знаю, где начинается сжатый файл в основном файле, и у меня есть размер распакованного файла, но не знаю, гдесжатый файл заканчивается.

Моя цель - извлечь сжатый файл из содержащего его файла и сохранить его как собственный файл.

Учитывая начальное местоположение сжатого файла и размер распакованного файла,Есть ли что-нибудь, что скажет мне размер сжатого файла или где заканчивается сжатый файл?

В настоящее время я перехожу из заголовка zlib в EOF в функцию inflate.Это отлично работает для небольших файлов, так как функция inflate отбрасывает любые данные после окончания сжатого файла и возвращает только распакованные байты.Однако для больших файлов, в которых сжатый файл находится в верхней части файла, моей системе не хватает памяти для передачи большей части файла в функцию inflate.

1 Ответ

1 голос
/ 23 марта 2019

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

Вы упомянули что-то о нехватке памяти. Основные функции zlib обрабатывают часть потока за раз, которые являются inflate* функциями для распаковки. Читать zlib.h .

...