十六进制命令校验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); }