首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSData算法

NSData算法
EN

Stack Overflow用户
提问于 2015-10-24 12:18:47
回答 1查看 94关注 0票数 0

我有一个不同长度的NSData对象,我想要做的是每两个字节抓取一次,并将它们相加到一个新的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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-24 12:58:56

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

代码语言:javascript
复制
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);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33318096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档