转换Base64 GZipped字符串Objective-c或Swift

时间:2014-11-18 09:48:26

标签: objective-c swift base64 gzip

我从这样的网络服务收到了一个字符串:

CAAAAB+LCAAAAAAABADtvQdgHEmWJSYvbcp7f0r1StfgdKEIgGATJNiQQBDswYjN5pLsHWlHIymrKoHKZVZlXWYWQMztnbz33nvvvffee++997o7nU4n99//P1xmZAFs9s5K2smeIYCqyB8/fnwfPyJOp/PqTf6u/X8A1v85+wgAAAA=

源字符串是" EchoText"使用Gzip压缩后转换为Base64

我必须首先解码Base64字符串,然后使用Unzip解码Gzip

我如何在Swift(或Objective-C)中执行此操作?


编辑:

我找到了一个使用Gzip的好库:nicklockwood/Gzip

这是我的代码:

    NSString* base64String = @"CAAAAB+LCAAAAAAABADtvQdgHEmWJSYvbcp7f0r1StfgdKEIgGATJNiQQBDswYjN5pLsHWlHIymrKoHKZVZlXWYWQMztnbz33nvvvffee++997o7nU4n99//P1xmZAFs9s5K2smeIYCqyB8/fnwfPyJOp/PqTf6u/X8A1v85+wgAAAA=";

NSData* compressedData = [[NSData alloc] initWithBase64EncodedString:base64String options:0];

NSData* unCompressedData = [compressedData gunzippedData];

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

但结果是零。

1 个答案:

答案 0 :(得分:2)

This answer here涵盖Base64。

zlib可直接在Mac OS X和iOS上作为共享库使用。它可以解压缩gzip流。

请注意,在访问gzip流之前,必须先删除示例的前四个字节。它们似乎包含little-endian形式的未压缩数据的大小。 (在您的示例中,它们是08 00 00 00。)