我想将NSData
转换为字节数组,因此我编写以下代码:
NSData *data = [NSData dataWithContentsOfFile:filePath];
int len = [data length];
Byte byteData[len];
byteData = [data bytes];
但最后一行代码会弹出一个错误,称为"分配中的不兼容类型".
我想将NSData
转换为字节数组,因此我编写以下代码:
NSData *data = [NSData dataWithContentsOfFile:filePath];
int len = [data length];
Byte byteData[len];
byteData = [data bytes];
但最后一行代码会弹出一个错误,称为"分配中的不兼容类型".
不能使用变量声明数组,所以Byte byteData[len];
不起作用.如果要从指针复制数据,还需要memcpy(它将遍历指针指向的数据,并将每个字节复制到指定的长度).
try :
NSData *data = [NSData dataWithContentsOfFile:filePath];
NSUInteger len = [data length];
Byte *byteData = (Byte*)malloc(len);
memcpy(byteData, [data bytes], len);
此代码将动态地将数组分配到正确的大小(完成后必须为free(byteData)
),并将字节复制到其中.
如果你想使用固定长度的数组,你也可以按照别人的指示使用getBytes:length:
.这避免了malloc/free,但扩展性较差,更容易出现缓冲区溢出问题,所以我很少使用它.