如何将NSData转换为NSString

时间:2013-01-22 10:58:16

标签: iphone ios nsstring nsdata

我知道之前已经问过这个问题了,我已经采用了几种方法,但它们都不起作用。

以下是我已经尝试的内容:

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

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

怎么办?

编辑: 我正在从http请求响应中接收这些数据 - 使用ASIHTTPRequest库,以防任何人可以在该行上提供帮助。

6 个答案:

答案 0 :(得分:11)

试试这个,

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

答案 1 :(得分:3)

您可以使用此代码行

NSString *str=[[NSString alloc] initWithBytes:data1.bytes length:data1.length encoding:NSUTF8StringEncoding];

答案 2 :(得分:3)

我发布这个是为了记录,因为我找到了duplicate并投票决定将其关闭。

实际上我收到的是一个以十六进制表示的字节流,并且所有指示的答案都不起作用。只有[NSData description]给了我真正的数据,这是我无法使用的,因为它是用于调试的。

最后,我尝试了here给出的解决方案,我得到了我想要的东西。 感谢大家帮忙。

答案 3 :(得分:2)

请尝试以下代码

NSString *string = [[[NSString alloc] initWithData: responseData.bytes encoding:NSUTF8StringEncoding] autorelease];

答案 4 :(得分:1)

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

但为此,您必须使用NSData + Base64Additions类。

答案 5 :(得分:0)

使用以下方式

 NSString *dC_Str = [[NSString alloc] initWithData:decryPtd_data encoding:NSASCIIStringEncoding] ;