谁能帮忙解释一下这段C程序是什么意思?求高手!//进行CRC检验u8 CheckSum(u8 *databuf){ u8 tmp = databuf[0]-1; u8 chksum=databuf[0]; while(tmp) { chksum^=databuf[tmp]; tmp--; } if(databuf[databuf[0]]==chksum) return 1; else datab

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/06 04:15:03

谁能帮忙解释一下这段C程序是什么意思?求高手!
//进行CRC检验
u8 CheckSum(u8 *databuf)
{
u8 tmp = databuf[0]-1;
u8 chksum=databuf[0];
while(tmp)
{
chksum^=databuf[tmp];
tmp--;
}
if(databuf[databuf[0]]==chksum) return 1;
else
databuf[databuf[0]]=chksum;
return 0;
}

这个程序对输入的字节数组内容格式做了规定,按照这个格式规定在内部计算校验值并做出判断.
-------------------------------------------------
字节个数 | 字节1 | 字节2 | .| 校验和
--------------------------------------------------
程序按照如下运行:
a,取的要校验的字节个 数 n;
b,然后计算校验和,计算公式为:chksum = n ^ 字节1 ^ 字节2 ^ 字节3 ^ 字节4 ^ .
c,将计算得到的校验和 chksum 与 字节数组中的保存的校验和进行比较,如果相当,则返回1;否则,将计算得到的 chksum 存入字节数组,并返回0 的结果.
C语言是挺有意思的一个东西,可以到 JulianTec 的邮件列表中像师兄师姐们求助.