метод zlib inflate не работает должным образом

0

Это код, используемый для раздувания:

z_ret = inflate(&oStream, Z_SYNC_FLUSH); 

z_ret возвращает Z_DATA_ERROR каждый раз, за исключением первого входящего потока

  • 0
    Если посмотреть в файле zlib.h, то -3 - это Z_DATA_ERROR , поэтому, возможно, произошла ошибка данных.
  • 0
    ошибка данных означает Входящие данные не действительны?
Показать ещё 4 комментария
Теги:
zlib

1 ответ

2
Лучший ответ

Согласно веб-странице zlib:

Z_DATA_ERROR указывает, что Z_DATA_ERROR inflate() обнаружил ошибку в сжатом формате данных zlib, что означает, что либо данные не являются потоком zlib для начала, либо что данные были повреждены где-то по пути, так как были сжаты.

В качестве альтернативы, возможно, что данные были сжаты с помощью специального словаря дефляции, для чего zlib потребуется для раздувания. Если это так, то в соответствии со ссылкой я упомянул:

... мы не знаем, что такое словарь, поэтому показатель Z_NEED_DICT преобразуется в Z_DATA_ERROR.

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


Редактирование: просмотрев комментарий Сальсы и более подробно изучая ваш код, неясно, что это актуальная проблема. Вы не указываете, какое значение z_ret имеет при сбое inflate.

  • 0
    метод inflate возвращает Z_DATA_ERROR.
  • 0
    о какой ссылке вы говорите
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню