找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2623|回复: 2
收起左侧

关于C语言数组表达 计算校验和的问题

[复制链接]
ID:189909 发表于 2018-12-2 11:58 | 显示全部楼层 |阅读模式
请问下坛中高手,已知一个unsigned char数组array[]={0xAB;0x BC,0xAC, 0x00, 00xe, 0x00, 0x00, 0x00, 0x00, 0x99, 0x99, 0x00, 0x00, 0x59},其中的array[3],array[4]两个字节为长度表。array[13]为校验和;需要怎样才计算校验和是否为array[13],校验和为array[0]+array[n......]+array[13].    因为数组长度可能变化不能用一个一个相加的方式来计算。
我用
unsigned int   m,k;
k=((array[3]<<8)+array[4]);        for( m=0;m<k;m++ )        {checksum+=array[m];}
计算出来好像不对



回复

使用道具 举报

无效楼层,该帖已经被删除
ID:412646 发表于 2018-12-2 14:37 | 显示全部楼层
可以先求出数组长度,然后累加,求长度:sizeof(array)/sizeof(char), 结果计算出来(求和不含最后一位)后再做以下操作:checksum%100+checksum/100=0x59了,如果你数据给的没问题的话。

评分

参与人数 1黑币 +80 收起 理由
admin + 80 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:189909 发表于 2018-12-2 16:12 | 显示全部楼层
zailushang316 发表于 2018-12-2 14:37
可以先求出数组长度,然后累加,求长度:sizeof(array)/sizeof(char), 结果计算出来(求和不含最后一位)后 ...

谢谢你的回答,你说的求和不包含最后一位提醒了我,上边的计算把最后一位包含进去了,再次谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表