我需要从图像中获取字节数组

时间:2014-03-06 11:33:31

标签: objective-c encoding nsmutablearray bytearray

我正在尝试获取包含图像字节的字节数组,如下所示:

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'。我是否选择了错误的方法从图像中获取字节数组,还是我的代码错了?

1 个答案:

答案 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,看看有多少元素被添加到数组中。