通信人家园

 找回密码
 注册

只需一步,快速开始

短信验证,便捷登录

搜索
查看: 2429|回复: 2
打印

请教个CRC问题 [复制链接]

军衔等级:

  中士

注册:2009-11-24
跳转到指定楼层
1#
发表于 2013-5-8 17:39:23 |只看该作者 |正序浏览
本帖最后由 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;
  }
}

举报本楼

本帖有 2 个回帖,您需要登录后才能浏览 登录 | 注册
您需要登录后才可以回帖 登录 | 注册 |

版规|手机版|C114 ( 沪ICP备12002291号-1 )|联系我们 |网站地图  

GMT+8, 2025-9-10 22:21 , Processed in 0.101671 second(s), 17 queries , Gzip On.

Copyright © 1999-2025 C114 All Rights Reserved

Discuz Licensed

回顶部