CRC校验

来源:互联网 发布:广州php招聘 编辑:程序博客网 时间:2024/05/01 15:36
BYTE1 BYTE2 BYTE3 BYTE4 BYTE5 BYTE6 BYTE7 BYTE8 BYTE9-BYTEn 0xCA 0xC0 帧首 帧首 帧长 地址 命令 类型 校验H 校验L 数据 pHead pHead pLen pAddr pComm pType pCheckDataH pCheckDatal pData[]
  • C#实现CRC校验
 public UInt16 CRCCCIT(byte[] data, int Datalength)        {            UInt16 wTemp = 0;            UInt16 wCRC = 0xFFFF;            UInt16 i, j;            for (i = 0; i < Datalength; i++)            {                for (j = 0; j < 8; j++)                {                    wTemp = (UInt16)(((data[i] << j) & 0x80) ^ ((wCRC & 0x8000) >> 8));                    wCRC <<= 1;                    if (wTemp != 0)                    {                        wCRC ^= 0x1021;                    }                }            }            return wCRC;        }
  • C/C++实现CRC校验
INT16U CRCCCITT(const INT8U* pDataIn, INT16U iLenIn){    INT16U wTemp = 0;    INT16U wCRC  = 0xFFFF;    INT32U i,j;    for (i = 0; i < iLenIn; i++)    {        for(j = 0; j < 8; j++)        {            wTemp = ((pDataIn[i] << j) & 0x80 ) ^ ((wCRC & 0x8000) >> 8);            wCRC <<= 1;            if(wTemp != 0)            {                wCRC ^= 0x1021;            }        }    }    return wCRC;}
1 0
原创粉丝点击