2014-05-15 2 views
3

[NSString dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES] 결과를 C 문자열로 변환하려면 어떻게해야합니까?NSData를 C 문자열로 변환하려면 어떻게해야합니까?

주어진 인코딩을 사용하여 인코딩 된 수신기의 표현을 포함하는 NSData 객체를 반환합니다. allowLossyConversion : 이 에 NULL 종결을 가지고 있지 않기 때문에 엄격한 C - 문자열이 아닌 dataUsingEncoding에 의해 반환 된 데이터가 있음을

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

참고. 단순히

답변

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

... 정확히 같은 결과.

+0

신이시다. – CommaToast

0

잘못된 질문을하는 것 같습니다.

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

NSData를 통과하는 것은 무의미합니다.

+0

OP가 ** 손실 변환 **을 허용해야합니다. 이것이 NSData를 통과하는 이유입니다. – Paolo

관련 문제