2013-08-28 240 views
0

我需要将NSData转换为类似unsigned char b[16]的东西。这是我迄今为止所拥有的。将NSData转换为无符号字符*

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:方法。