Base64字符串到NSData然后是gunzip

时间:2013-03-12 17:50:53

标签: ios gzip nsdata

我有一个base64编码的二进制NSString,我转换为NSData对象,使用@mattt的Godzippa类我试图枪杀nsdata但是我收到一个错误:

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

当我进一步调查时,zStream.msgmsg = 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);
}

2 个答案:

答案 0 :(得分:1)

我有一些代码可以完全满足您的要求(gunzip不能解压缩)。您可以在我的博客here上找到GitHub here上的来源和逐行说明。

答案 1 :(得分:0)

事实证明,当我需要解压缩gzip文件时,我试图解压缩zlib存档。具体来说,我必须将libz / gzip库中的inflateInit()更改为inflatateInit2()方法。