2013-08-28 4 views
0

NSData를 unsigned char b[16]과 같은 것으로 변환해야합니다. 이것은 내가 지금까지 가지고있는 것이다.NSData to unsigned char *

NSData *c = [@"testingsomething" dataUsingEncoding:NSUTF8StringEncoding]; 
unsigned char *a = (unsigned char *)[c bytes]; 
NSLog(@"size of a is %ld", sizeof(a)); 
unsigned char b[16] = "testingsomething"; 
NSLog(@"size of b is %ld", sizeof(b)); 

출력은 다음과 같습니다.

size of a is 4 
size of b is 16 

어떻게하면됩니까? 도움말 크게 감사하겠습니다.

답변

5

첫 번째 인스턴스에서 sizeof은 포인터 유형 인 객체를 제공하기 때문에 포인터의 크기를 제공합니다. 두 번째 인스턴스에서는 sizeof배열 유형의 객체를 제공하기 때문에 배열의 크기를 제공합니다. C에서 포인터와 배열은 종종 상호 교환 가능하지만 여전히 고유 한 유형으로 간주되며 별개의 의미를가집니다.

바이트를 사용자 버퍼에 복사하려면 NSDatagetBytes:range: 메서드를 사용하십시오. 또는 특정 인코딩에서 문자열의 바이트 표현을 얻으려는 경우 NSStringgetBytes:maxLength:usedLength:encoding:options:range:remainingRange: 메소드를 살펴보십시오.