通信人家园

标题: 请教个CRC问题  [查看完整版帖子] [打印本页]

时间:  2013-5-8 17:39
作者: meadow163     标题: 请教个CRC问题

本帖最后由 meadow163 于 2013-5-9 18:08 编辑

使用用查表发生成单个字节16bitCRC
void DLCRC::MK_CRC16Table(void)
{
  //const unsigned short genploy = GenPloy16;
  unsigned short crc_result = 0x0000;
  for (unsigned short i = 0;i < 256;i ++)
  {
  crc_result = i << 8;
  for(unsigned char j = 0;j < 8;j ++)//问题在这里,计算16bitCRC按照理论,应该是将8bit的数据左移动16bit然后用这个值与生成多项式去做异或,但是为什么我看到的所有程序都是只移动8次,就停止了呢?8bit后如果继续补0计算的话,结果和只做8次结果是不一样的啊?我哪里理解的有问题,请帮忙解答下,谢谢
  {
   if(crc_result & 0x8000)
   {
   crc_result <<= 1;
   crc_result = crc_result ^ GenPloy16;
   }
   else
    crc_result <<= 1;
  }
  CRCTable_16 = crc_result;
  }
}

时间:  2013-5-9 11:38
作者: meadow163

没人给回复下啊,泪
时间:  2013-6-18 22:50
作者: 番茄鸡蛋

友情路过




通信人家园 (https://www.txrjy.com/) Powered by C114