将NSData转回纯文本NSString

时间:2011-01-22 11:01:04

标签: iphone nsstring nsdata

我有一个简单的NSString,我将它转换为NSData:

NSData *data = [[NSData dataWithBytes:[[NSString stringWithFormat:@",%@",self.targetId] dataUsingEncoding:NSASCIIStringEncoding] 
                              length:[[NSString stringWithFormat:@",%@",self.targetId] lengthOfBytesUsingEncoding:NSASCIIStringEncoding]] retain];

现在我想从NSData对象中获取纯文本。
如果我这样做:

NSString* dataStr = [NSString stringWithFormat:@"%@",data];

- 我只得到一个十六进制表达式(即< 9c3f473e 02000000 0b0000>)而不是我想要的纯字符串!

我也尝试过使用initWithData -

    NSString* dataStr = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];

但是无论我给它采用哪种编码,它总是表现得很狡猾。

你能帮忙吗? :)

2 个答案:

答案 0 :(得分:9)

您需要将第一个代码段简化为:

NSData *data = [[NSString stringWithFormat:@",%@",self.targetId] dataUsingEncoding:NSASCIIStringEncoding] 

然后你的第二个解码片段将起作用:

NSString* dataStr = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];

答案 1 :(得分:1)

进行以下更改将起作用。

NSData *data = [[NSString stringWithFormat:@",%@",self.targetId] dataUsingEncoding:NSASCIIStringEncoding] ;

你做了数据的NData。