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

Dmi*_*try 3 objective-c nsdata ios

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

返回一个NSData对象,该对象包含使用给定编码进行编码的接收器的表示形式。

- (NSData *)dataUsingEncoding:(NSStringEncoding)encoding allowLossyConversion:(BOOL)flag
Run Code Online (Sandbox Code Playgroud)

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

Nik*_*uhe 5

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

或者,简单地:

const char *cString = [@"foo" UTF8String];
Run Code Online (Sandbox Code Playgroud)

...结果完全一样。