将NSData转换回普通文本NSString

5

我有一个简单的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];

但无论我使用哪种编码,它始终显示乱码。您能帮忙吗? :)

你尝试过使用NSUTF8StringEncoding而不是NSASCIIStringEncoding吗? - user142019
2个回答

9
你需要将第一个代码片段简化为以下形式:
NSData *data = [[NSString stringWithFormat:@",%@",self.targetId] dataUsingEncoding:NSASCIIStringEncoding] 

然后您的第二个解码代码片段将起作用:
NSString* dataStr = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];

请注意释放NSString!它不是自动释放的。 - user142019

1

按照以下更改,它就能工作了。

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

你处理了N个数据。


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