Я использую + [NSData gtm_dataByGzippingData:] для gzip кодированных данных UTF-8, возвращаемых +[NSJSONSerialization dataWithJSONObject:options:error:]
.
Как преобразовать эти gzipped NSData
в строку, которую я могу отправить в качестве параметра на сервер Python, чтобы сервер мог распаковать его с помощью zlib.decompress()?
Как говорится в файле заголовка, на который вы ссылались в своем вопросе, deflate НЕ является gzip. Gzip - это файловая структура, где zlib больше относится к потоку сжатия.
Во-первых, я рекомендую вам изменить свой код для использования...
+ (NSData *)gtm_dataByDeflatingData:(NSData *)data;
Итак, теперь у вас сжатые данные. Как вы отправляете его на сервер? Вы проталкиваете это через HTTP? Это настраиваемая служба с прямым подключением сокетов? Можете ли вы отправить 8-битные байты, вы ограничены отправкой 7-битных байтов?... вы используете NURLConnection?... вы пытаетесь загрузить (сжатые) данные в виде файла через HTTP?
Используйте метод, например -[NSData base64EncodedString]
чтобы base64-encode gzipped NSData
перед отправкой на сервер Python.
Затем сервер Python может base64-декодировать его, а затем распаковать его так:
contacts_data = zlib.decompress(base64.b64decode(contacts_base64), 16)