2016-10-03 1 views
-1

char*을 입력 매개 변수로 사용하는 함수를 작성하려고합니다.이를 JSON으로 직렬화합니다.char * to NSData 문제

입력 매개 변수 options을 NSData로 변환 할 때 문제가 있습니다. 이 작동하지 않았다

NSData *data = [NSData dataWithBytes:options length:sizeof(options)];

: 나는 다음 코드 줄을 사용했다.

NSString* stringFromChar = [[NSString alloc] initWithUTF8String:options]; NSData * data = [stringFromChar dataUsingEncoding:NSUTF8StringEncoding];

나는있는 NSString에 char*에서 내 코드를 변환하는 데 필요한 이유에 대해 다음을 NSData에 왜 내가 직접 그렇게 할 수없는 호기심 : 코드의 다른 세트는 작업을했다. 이 중개 단계없이 char*을 NSData로 직접 변환 할 수 있습니까? 감사.

+3

'의를 sizeof (옵션)'당신이 그것을 기대하지 무엇을 가능성이 높습니다. 그 값을 출력하려면'NSLog'를 사용하십시오. 또는 질문에 더 많은 문맥을 부여하기 위해 더 많은 코드를 추가하십시오. – user3386109

+1

strlen()에 대한 문서를보십시오. –

답변

1

설명 된 바와 같이 여기서 optionschar *입니다. 문자열의 길이가 아니라 포인터의 크기가 생성됩니다. 또한 의견에서 지적, 당신이 원하는 첫 번째 0x0으로, 최대 strlen(options) 카운트 문자 ...

NSData *data = [NSData dataWithBytes:options length:strlen(options)]; 
// options must be null-terminated