初级会员
- 积分
- 126
- 金钱
- 126
- 注册时间
- 2015-4-13
- 在线时间
- 17 小时
|
5金钱
C语言算法:
uchar data[17]={0x3a,0x30,0x31,0x30,0x35, 0x00,0x00,0x00,0x00,//no 0x00,0x00,0x00,0x00,//status 0x00,0x00,
//LRCData
0x0d,0x0a
};
//*******************************************************************************
// 语法格式:uchar LRC_Check(uchar *data,uchar length); // 实现功能:LRC数据检测算法程序 // 参数: 无
// 返回值: LRC检验值
//******************************************
uchar LRC_Check(uchar *data,uchar length)
{
uchar i; uint k;
uchar result;
uchar lrcdata[length]; for(i=1;i<length+1;i++)
{
if(data>0x40)
lrcdata[i-1]=data-0x41+10;
else
lrcdata[i-1]=data-0x30;
}
k=0;
for(i=0;i<length/2;i++)
{
k+=(lrcdata[2*i]*16+lrcdata[2*i+1]);
}
k=k%256;
k=256-k;
result=k%256;
return result;
}
实现功能:LRC数据检测算法程序。请教原子哥,程序中红框内是什么意思?为什么要和0x40做比较?比较之后又为什么要做对应的处理?谢谢原子哥! |
|