2013-03-12 5 views
0

У меня есть в кодировке base64 NSString из двоичного файла, который я преобразовать в объект NSData, используя Godzippa класс @ mattt, я пытаюсь разархивировать NSData, но я получаю сообщение об ошибке:Base64 строку NSData затем разархивировать

Error Domain=com.godzippa.zlib.error Code=-3 "Error inflating payload" UserInfo=0x881b0b0 {NSLocalizedDescription=Error inflating payload}

Когда я исследовал дальше в zStream.msg является msg = 0x000164de "incorrect header check"

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

Вот как я это делаю, я удалил строку base64 однако:

NSString *dataString = @"REMOVED BASE64 STRING HERE"; 

NSData *data = [NSData dataFromBase64String:dataString]; 

NSError *error = nil; 

NSData *decompressed = [data dataByGZipDecompressingDataWithError:&error]; 

if(error){ 
    NSLog(@"Error: %@", error); 
} 

ответ

0

Оказывается, что я пытался распаковать архив ZLIB, когда мне нужно распаковать файл GZIP. В частности, мне пришлось изменить inflateInit() на метод inflatateInit2() в библиотеке libz/gzip.

1

У меня есть код, который выполняет именно то, что вы ищете (gunzip не распаковывать). Вы можете найти источник на GitHub here и описание по строкам в моем блоге here.

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