2014-01-22 2 views
0

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

z_ret = inflate(&oStream, Z_SYNC_FLUSH); 

z_ret возвращает Z_DATA_ERROR каждый раз, когда в первый раз в входящем потоке

+0

В файле zlib.h '-3' есть' Z_DATA_ERROR', поэтому может произойти ошибка данных. – icabod

+0

ошибка данных означает? Недействительны ли входящие данные? – user3136124

+1

Возвращает ли ВАШ код код -3 или это код возврата ZLIB? Просьба уточнить. – Salsa

ответ

2

В соответствии с zlib веб-страницы, кроме:

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

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

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

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


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

+0

Метод раздувания возвращает Z_DATA_ERROR. – user3136124

+0

, в котором вы говорите о – user3136124

+0

@ user3136124: ссылка на веб-страницу zlib. – icabod

Смежные вопросы