如何将NSData转换为C字符串?

时间:2014-05-15 13:17:49

标签: ios objective-c nsdata

如何将[NSString dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]结果转换为C字符串?

  

返回一个NSData对象,其中包含使用给定编码编码的接收器的表示。

- (NSData *)dataUsingEncoding:(NSStringEncoding)encoding allowLossyConversion:(BOOL)flag
  

请注意dataUsingEncoding返回的数据:allowLossyConversion:   不是严格的C字符串,因为它没有NULL终结符

3 个答案:

答案 0 :(得分:4)

NSMutableData *data = [[@"foo" dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES] mutableCopy];
char nul = '\0';
[data appendBytes:&nul length:sizeof(nul)];
const char *cString = [data bytes];

或者,简单地说:

const char *cString = [@"foo" UTF8String];

......结果完全相同。

答案 1 :(得分:0)

有一种-[NSString cStringUsingEncoding:]方法听起来很有希望。

答案 2 :(得分:0)

你似乎在问错误的问题。

NSString* myString = @"Whatever";
const char* utf8String = [myString UTF8String];

通过NSData毫无意义。