0

我需要将 NSData 转换为unsigned char b[16]. 这就是我到目前为止所拥有的。

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

我怎样才能做到这一点?帮助将不胜感激。

4

1 回答 1

5

在第一个实例中,sizeof给你一个指针的大小,因为你给它一个指针类型的对象。在第二种情况下,它给你一个数组的大小,因为你给了一个数组类型sizeof的对象。在 C 中,指针和数组通常可以互换,但它们仍然被认为是不同的类型并且具有不同的语义。

如果要将字节复制到自己的缓冲区,请使用NSData'sgetBytes:range:方法。或者,如果您试图以特定编码获取字符串的字节表示,请查看NSString'sgetBytes:maxLength:usedLength:encoding:options:range:remainingRange:方法。

于 2013-08-28T03:40:02.547 回答