标题: 关于C语言数组表达 计算校验和的问题 [打印本页]

作者: 576951469    时间: 2018-12-2 11:58
标题: 关于C语言数组表达 计算校验和的问题
请问下坛中高手,已知一个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];}
计算出来好像不对




作者: zailushang316    时间: 2018-12-2 14:37
可以先求出数组长度,然后累加,求长度:sizeof(array)/sizeof(char), 结果计算出来(求和不含最后一位)后再做以下操作:checksum%100+checksum/100=0x59了,如果你数据给的没问题的话。
作者: 576951469    时间: 2018-12-2 16:12
zailushang316 发表于 2018-12-2 14:37
可以先求出数组长度,然后累加,求长度:sizeof(array)/sizeof(char), 结果计算出来(求和不含最后一位)后 ...

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




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1