0

我正在使用 NSData+compression.h 和 Base64Transcoder.h 元素来压缩和解压缩内容。

基本上是解压缩服务器响应。

解压缩方法完美运行

+ (NSString *) unzip: (NSString*) stringValue{
    Byte inputData[[stringValue lengthOfBytesUsingEncoding:NSUTF8StringEncoding]];
    [[stringValue dataUsingEncoding:NSUTF8StringEncoding] getBytes:inputData];
    size_t inputDataSize = (size_t)[stringValue length];
    size_t outputDataSize = EstimateBas64DecodedDataSize(inputDataSize);
    Byte outputData[outputDataSize];//prepare a Byte[] for the decoded data
    Base64DecodeData(inputData, inputDataSize, outputData, &outputDataSize);
    NSData *theData = [[NSData alloc] initWithBytes:outputData length:outputDataSize];

    //And now we gunzip:
    NSData* result = [theData gzipInflate];//make bigger==gunzip

    NSString *temp = [[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding];

    return temp;
}

但是当我尝试使用 simetric 方式压缩内容时,gzipDeflate 失败,并返回空值或 nil 值。

这是我的邮政编码

+ (NSData *) zip:(NSData *) theSourceData {
    // And now we zip:
    NSData *result = [theSourceData gzipDeflate];

    Byte inputData[[result length]];
    [result getBytes:inputData];
    size_t inputDataSize = (size_t)[result length];
    size_t outputDataSize = EstimateBas64DecodedDataSize(inputDataSize);
    char outputData[outputDataSize];//prepare a Byte[] for the decoded data
    Base64EncodeData(inputData, inputDataSize, outputData, &outputDataSize, NO);

    NSData *theData = [[NSData alloc] initWithBytes:outputData length:outputDataSize];

    return theData;
}

有什么建议么?

谢谢

4

1 回答 1

0

问题出在 Base64 编码器上。

+ (NSString *) zip:(NSData *) theSourceData {

    // And now we zip:
    NSData *result = [theSourceData gzipDeflate];
    NSString *source = [NSString base64StringFromData:result length:[result length]];

    return source;
}

我们集成了 base64StringFromData:length: 方法来解决它。

谢谢,

伊万

于 2012-05-18T08:39:19.880 回答