十六进制命令校验C代码


/********************************************

 * CRC校验
 */
unsigned short GetCrc16 ( char *ptr, unsigned short count )  //其中*ptr为帧首地址,count为(帧长度-2)
{
  unsigned short crc, i;     //unsigned short 无符号整型,范围是[0,65535]
  crc = 0;
  while(count--)
   {
      crc = crc ^ (int) *ptr++ << 8;
      for(i = 0; i < 8; i++)
        {
           if(crc & 0x8000)
           crc = crc << 1 ^ 0x1021;
           else
           crc = crc << 1;
        }
    }
 return (crc & 0xFFFF);
}

你可能感兴趣的:(c语言,CRC)