为什么循环里面用异或就可以判断数据是够异常?

功 能: 检查校验数据包是否正常
参 数: 传入字符串(str)
字符串长度(len)
返 回 值: 0:成功
-1:失败

int check_lrc(char * str, int len)
{
int i;
char LRC = 0x00;
for(i=0; i<len -1; i++)
{
LRC ^= str[i];
}
if( LRC != str[len -1] )
{
return -1;
}
return 0;
}

第1个回答  2013-03-05
这个应该是事先规定好的,发送数据时,已经计算好 字符串前len-1个字符的异或 等于 最后一个字符
收到后再判断是否是这样的,如果是则数据正确,反之,则不对。这就是基本的数据校验。
第2个回答  2013-03-05
不是异或能检查数据异常,而是这个数据异常检查的checksum算法里用到了异或
看你的代码,这个checksum算法应该是这样的:这个字符串最后一位应该是前面所有字符的异或的值本回答被提问者采纳
相似回答