我从这样的网络服务收到了一个字符串:
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];
但结果是零。
答案 0 :(得分:2)
This answer here涵盖Base64。
zlib可直接在Mac OS X和iOS上作为共享库使用。它可以解压缩gzip流。
请注意,在访问gzip流之前,必须先删除示例的前四个字节。它们似乎包含little-endian形式的未压缩数据的大小。 (在您的示例中,它们是08 00 00 00
。)