caihong001 发表于 2012-5-5 15:58:55

头疼!!CRC16校验如何理解??

CRC16校验程序,怎么理解啊,自己用手去算我知道怎么回事,不过用代码实的我就理解不了了,看了一天了,都开始怀疑自己的智商了!!!

unsigned char test
={0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff};
unsigned char len = 16;
void main( void )
{
   unsigned int crc = 0;
   unsigned char i;
   unsigned char *ptr = test;
   while( len-- )
   {
          for(i = 0x80; i != 0; i = i >> 1)
          {
               if((crc & 0x8000) != 0)
                {
                      crc = crc << 1;
                      crc = crc ^ 0x1021;
               }
               else
            {
                      crc = crc << 1;
            }
            if((*ptr & i) != 0)
               {
                     crc = crc ^ 0x1021;
                }
         }
          ptr++;
    }
    printf("0x%x ",crc);
}

dory_m 发表于 2012-5-8 13:22:49

占座!!!
页: [1]
查看完整版本: 头疼!!CRC16校验如何理解??