[英]Convert unsigned char* to NSData and vice-versa in Objective-C
只想使用 objective-c 将 NSData 转换为 Byte 并将 Byte 转换为 NSData
unsigned char* dataToByteArray = (unsigned char*) [data bytes];
NSLog(@"Bytes is %@", dataToByteArray);
NSData *datas = [NSData dataWithBytes:&dataToByteArray length:sizeof(dataToByteArray)];
NSLog(@"Data is like%@", datas);
NSLog(@"After convert bytes is %@", dataToByteArray)
两件事情:
传递缓冲区,不是指向缓冲区的指针,长度是指缓冲区中元素的数量,而不是缓冲区指针的大小:
[NSData dataWithBytes:dataToByteArray length:[data length]]
sizeof(dataToByteArray)
变为指针的大小 - 8 个字节。 初始化器想知道缓冲区中有多少元素。
此外, %@
仅用于记录 Objective-C 对象。 unsigned char *
是 C 缓冲区,而不是 Objective-C object。 (您不能用一个“%something”直接记录 C 缓冲区,因为指针不包含足够的信息,例如,有多少元素以及何时停止记录。它也可以是指向单个unsigned char
。但是您可以使用%p
来记录指针, NSLog(@"first byte: %c", dataToByteArray[0])
来记录第一个字节等)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.