CRC校验码计算公式
int CRC_Check(char *m_Data,short m_Size)
{
int i0,i1;
char CRC16Lo,CRC16Hi; //CRC寄存器
char SaveHi,SaveLo;
CRC16Lo = 0xFF;
CRC16Hi = 0XFF;
for(i0=0;i0<m_Size;i0++)
{
CRC16Lo = CRC16Lo ^ *(m_Data+i0); //每一个数据与CRC寄存器进行异或
for(i1=0;i1<8;i1++)
{
SaveHi = CRC16Hi;
SaveLo = CRC16Lo;
CRC16Hi >>=1; //高位右移一位
CRC16Lo >>=1; //低位右移一位
if((SaveHi & 1) == 1) //如果高位字节最后一位为1
{
CRC16Lo |=0x80; //则低位字节右移后前面补1
}
if((SaveLo & 1) == 1) //如果LSB为1,则与多项式码进行异或
{
CRC16Hi ^=0XA0;
CRC16Lo ^=1;
}
}
}
return ( CRC16Hi << 8 )| CRC16Lo;
}
CRC校验码计算公式
最新推荐文章于 2023-06-13 23:56:44 发布