/* 校验和算法就是将除校验和之外的所有数据相加,将结果放在校验和的位置 */
unsigned char check_num(unsigned char *buf, int len)
{
if(NULL == buf || len < 0)
{
return 0;
}
unsigned char checknum = 0;
for (int i = 0; i < len; i++)
{
checknum += *buf++;
/*
* 校验和大于255时去其补码作为校验和
* 由于unsigned char 的取值范围就是 0 ~ 255
* 所以可以不用判断校验和大于255
*/
/*
if(sum > 255)
{
checknum = checknum & 0xff;
}
*/
}
return checknum;
}
https://gitee.com/DemonAngel_water/DemonAngel/tree/master/01_CLanguage