NSData到NSString使用initWithBytes:length:encoding

时间:2010-11-10 06:59:20

标签: iphone nsstring uiimage nsdata

我有一些图片数据(jpeg)我想从我的iPhone应用程序发送到我的网络服务。为了做到这一点,我正在使用图像中的NSData并将其转换为一个字符串,该字符串将放在我的JSON中。

目前,我正在这样做:

    NSString *secondString = [[NSString alloc]  initWithBytes:[result bytes]
                                                    length:[result length] 
                                                  encoding:NSUTF8StringEncoding];

结果是NSData类型。但是,即使结果长度返回实际值(如14189),secondString似乎也为null。我使用这种方法,因为结果是原始数据而不是以空值终止。

我做错了吗?我在其他领域使用过此代码,似乎工作正常(但我目前正在使用的那些区域涉及文本而不是图像数据)。

TIA。

2 个答案:

答案 0 :(得分:2)

对于二进制数据,最好使用Base64编码对其进行编码,然后在webservice中对其进行解码。我使用从here下载的NSData + Base64类,此引用也取自Stackoverflow,由@Ken制作answer(谢谢Ken!)。

答案 1 :(得分:2)

您没有将数据转换为字符串。您试图将其解释为UTF-8编码的字符串,除非数据确实是UTF-8编码的字符串,否则它将失败。你最好的选择是以某种方式对其进行编码,可能是Manny建议的Base64,然后在服务器上再次解码。