NSData算法

NSData arithmetic

我有一个 NSData 不同长度的对象,我想做的是抓取每 2 个字节,并将它们加在一起成为一个新的 NSData 对象。

我该怎么做?

我找到了这个方法: enumerateByteRangesUsingBlock但不知道如何算术。

例如,我有这个数据:37 64 61 31 33 61 36 38 61 39 39 37 36 34 39 36 30 34 36

我想对所有这些值求和:64 31 61 38 39 37 34 36 34

最后得到这个结果:02 3C

假设:您希望将多个无符号 8 位值相加为一个无符号 16 位值,忽略溢出。

NSData *data = ...;
const uint8_t *p = (const uint8_t *)[data bytes];
NSUInteger length = [data length];
uint16_t total = 0;
for (NSUInteger i = 1; i < length; i += 2)
    total += (uint16_t)p[i];
NSLog(@"total=%u", (unsigned)total);