如何将NSData转换为NSString

6

我知道这个问题之前已经有人问过,并且我已经尝试了几种方法,但它们都不能解决问题。

以下是我已经尝试过的方法:

NSString *newStr = [NSString stringWithUTF8String:[responseData bytes]];
NSString *newStr = [NSString stringWithFormat:@"%.*s", [responseData length], [responseData bytes]];

它们都不起作用。在第一种情况下,它用空值填充了newStr。在第二种情况下,它用垃圾字符填充了newStr。我从调试器日志(po responseData)中知道,我获得了有效的响应,类似于bbbbbb 00 bbbbbb。[服务器将它们作为字节数组发送]

怎么办?

编辑:我正在使用ASIHTTPRequest库从http请求响应中接收这些数据,如果有人能够提供帮助,请告知。


尝试这个:https://dev59.com/AXE95IYBdhLWcg3wE52C - DD_
我已经尝试了那里描绘的解决方案,也提到过。 - Nirav Bhatt
1
你检查过你的NSData是否为空吗? - DD_
尝试使用简单的responseData而不是[responseData bytes]来处理第一行。 - colincameron
抱歉,我的错误。我忘记了-stringWithUTF8String:需要一个const char *参数。 - colincameron
显示剩余2条评论
6个回答

13

试一试这个,

NSData *responseData; [Initialize it]
NSString *receivedDataString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 
NSLog(@"%@",receivedDataString);

3
请尝试以下代码:
NSString *string = [[[NSString alloc] initWithData: responseData.bytes encoding:NSUTF8StringEncoding] autorelease];

3
你可以使用这些代码行。
NSString *str=[[NSString alloc] initWithBytes:data1.bytes length:data1.length encoding:NSUTF8StringEncoding];

你的数据是什么?我从工作项目中得到了这个字符串,它运行良好。也许你的数据编码不是UTF8? - aknew

3
我发这篇文章是为了记录,因为我发现了一个重复的帖子并且投票要求关闭它。
实际上,我接收到的是十六进制表示的字节流,所有的答案都不起作用。只有[NSData description]给了我正确的数据,但是它是为调试而设计的,我不能使用它。
最后,我尝试了这里提供的解决方案,终于得到了我想要的结果。感谢大家的帮助。

2
NSString  *image1Data = [[NSData dataWithData:myData] encodeBase64ForData];

但是,要实现这一点,您需要使用NSData+Base64Additions类。


1
使用以下方式
 NSString *dC_Str = [[NSString alloc] initWithData:decryPtd_data encoding:NSASCIIStringEncoding] ;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接