2011-01-22 40 views
5

我有一个简单的NSString,我将其转换为NSData的:谈到的NSData回纯文本的NSString

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]; 

但它总是显示gibrish,不管我给它哪种编码。

你能帮忙吗? :)

+0

你尝试NSUTF8StringEncoding代替NSASCIIStringEncoding? – 2011-01-22 11:17:48

回答

9

你需要简化你的第一个代码片段:

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

然后你的第二解码段将工作:

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

请注意,您必须发布NSString!它不是autoreleased。 – 2011-01-22 11:16:17

1

做下面的改变它将工作。

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

你做了NData的数据。