找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2693|回复: 1
打印 上一主题 下一主题
收起左侧

CRC16节约空间的计算方法

[复制链接]
跳转到指定楼层
楼主
ID:332297 发表于 2018-5-17 17:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
// 计算CRC16的值
unsigned short CRC16(unsigned char *nData, unsigned short wLength)
{
  unsigned short static const CRC16tbl[16]={ // CRC余式表
    0x0000,0xCC01,0xD801,0x1400,0xF001,0x3C00,0x2800,0xE401,
    0xA001,0x6C00,0x7800,0xB401,0x5000,0x9C01,0x8801,0x4400
  };
  unsigned short wCRCWord=0xffff;
  unsigned char  da;
  while(wLength--)
  {
    da = wCRCWord^*nData;
    wCRCWord >>= 4;
    wCRCWord ^= CRC16tbl[da&0x0f];
    da = wCRCWord^((*nData)>>4);
    wCRCWord >>= 4;
    wCRCWord ^= CRC16tbl[da&0x0f];
    nData++;
  }
  return wCRCWord;
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:346116 发表于 2018-11-5 13:17 | 只看该作者
待校验的信息流
unsigned char c[] = {0x55,0xAA,0x00,0x01,0x04,0x15,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
用这个函数校验出来的结果是0x3c34,这是正确的。
其实我更想知道CRC16tbl[16]这张表示如何来的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表