- #define FACTOR (0x107 & 0xFF) //多项式因子(取低8bit)
- unsigned char calcCRC(unsigned char *pdat, unsigned int len)
- {
- unsigned char j;
- unsigned char crc = 0x00;
- while(len--)
- {
- crc ^= (*pdat++);//前一字节计算CRC后的结果异或上后一字节,再次计算CRC
- for (j=8; j>0; j--)
- {
- crc <<= 1;
- if (crc & 0x80)//高位为1,需要异或;否则,不需要
- {
- crc ^= FACTOR;
- }
- }
- }
- return crc;
- }