2015-10-24 4 views
0

У меня есть объект переменной длины, и я хочу, чтобы захватить каждый второй байт и суммировать их все вместе в новый объект NSData.NSData arithmetic

как бы я это сделал?

Я нашел этот метод: 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

ответ

2

Допущение: Вы хотите подвести множественным без знака 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); 
+0

спасибо, это было намного проще, чем я себе представлял. – gypsyDev