Objective c NSData到固定长度的NSData的NSMUTABLE数组

Objective c NSData到固定长度的NSData的NSMUTABLE数组,objective-c,nsdata,Objective C,Nsdata,我试图从NSData中获取16字节的NSMUTABLEARRY,但没有成功。也许有人能给我指出正确的方向 例如: 输入: 输出: 我试着这样做: NSMutableArray *blocks = [[NSMutableArray alloc]init]; for (NSUInteger i = 0; i <= [data length]; i=i+16) { unsigned char *byte = NULL; [data getBytes:byte range:NSMa

我试图从NSData中获取16字节的NSMUTABLEARRY,但没有成功。也许有人能给我指出正确的方向

例如: 输入:

输出:

我试着这样做:

NSMutableArray *blocks = [[NSMutableArray alloc]init];
for (NSUInteger i = 0; i <= [data length]; i=i+16) {
    unsigned char *byte = NULL;
    [data getBytes:byte range:NSMakeRange(i, 16)];
    NSData *temp = [[NSData alloc] initWithBytes:byte length:sizeof(byte)];
    [blocks addObject:temp];
}
for (NSUInteger i = 0; i <= [data length] - 16; i = i + 16) {
    NSData *temp = [data subdataWithRange:NSMakeRange(i, 16)];
    [blocks addObject:temp];
}
NSMutableArray*块=[[NSMutableArray alloc]init];
对于(i=0;i)
将数据复制到由
byte
指向的内存中,它不分配内存。复制数据会崩溃,因为
byte==NULL
不指向有效内存。替换

unsigned char *byte = NULL;

应该可以解决问题,但请注意

NSData *temp = [data subdataWithRange:NSMakeRange(i, 16)];
更简单,根本不需要字节缓冲区

还要注意,for循环

for (NSUInteger i = 0; i <= [data length]; i=i+16)
将数据复制到由
byte
指向的内存中,它不分配内存。复制数据会崩溃,因为
byte==NULL
不指向有效内存。替换

unsigned char *byte = NULL;

应该可以解决问题,但请注意

NSData *temp = [data subdataWithRange:NSMakeRange(i, 16)];
更简单,根本不需要字节缓冲区

还要注意,for循环

for (NSUInteger i = 0; i <= [data length]; i=i+16)

哇..谢谢你的精彩解释和精彩回答。我确实从中学到了一些东西。再次感谢你。哇..谢谢你的精彩解释和精彩回答。我确实从中学到了一些东西。再次感谢你。