Objective-C将NSData压缩为Python gzipped字符串?

时间:2012-05-12 00:03:39

标签: python objective-c nsstring gzip nsdata

我正在使用+[NSData gtm_dataByGzippingData:] gzip +[NSJSONSerialization dataWithJSONObject:options:error:]返回的UTF-8编码数据。

如何将此gzip压缩NSData转换为我可以作为参数发送到Python服务器的字符串,以便服务器可以使用zlib.decompress()对其进行解压缩?

2 个答案:

答案 0 :(得分:1)

使用-[NSData base64EncodedString]之类的方法对gzip压缩的NSData进行base64编码,然后再将其发送到Python服务器。

然后,Python服务器可以对其进行base64解码,然后解压缩它:

contacts_data = zlib.decompress(base64.b64decode(contacts_base64), 16)

答案 1 :(得分:1)

正如您在问题中引用的头文件中所述,deflate不是gzip。 Gzip是一种文件结构,其中zlib更像是压缩流。

首先,我建议您更改代码以使用...

+ (NSData *)gtm_dataByDeflatingData:(NSData *)data;

所以,现在你有了压缩数据。你是怎么把它发送到服务器的?你是通过HTTP推动这个吗?它是具有直接套接字连接的自定义服务吗?你能发送8位字节,是否限制发送7位字节?你在使用NURLConnection吗? ...您是否尝试通过HTTP将(压缩)数据上传为文件?