我正在尝试获取包含图像字节的字节数组,如下所示:
NSString* filePath = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"png"];
NSData *data = [NSData dataWithContentsOfFile:filePath];
unsigned char *bytesArray = data.bytes;
NSUInteger lengthOfBytesArray = data.length;
接下来,我尝试将这些值复制到数组中。
if (data.length>0)
{
NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:data.length];
for (int i = 0; i<data.length; i++) {
unsigned char byteFromArray = bytesArray[i];
[array addObject:[NSValue valueWithBytes:&byteFromArray objCType:@encode(unsigned char)]];
}
}
最后在调试中我收到了一些空对象。它们具有内存地址但没有值(NSConcreateValue类型)。同样在调试区域中,我检查了byteFromArray
,它是一个`(unsigned char)'P'。我是否选择了错误的方法从图像中获取字节数组,还是我的代码错了?
答案 0 :(得分:0)
尝试替换此
for (int i = 0; i<data.length; i++) {
unsigned char byteFromArray = bytesArray[i];
[array addObject:[NSValue valueWithBytes:&byteFromArray objCType:@encode(unsigned char)]];
}
用这个
for (int i = 0; i<data.length; i++)
[array addObject:[NSNumber numberWithUnsignedChar:bytesArray[i]]];
另外,我建议添加一个NSLog来显示data.length,看看有多少元素被添加到数组中。