/*******************************************************************************

* Copyright (c) 2012 ICPUB.NET. All Rights Reserved.

*

* 文件名称: crc16.c

* 简要描述: CRC16查表算法

*

* 当前版本: 1.0

* 作 者: ICPUB.NET

* 完成日期: 2012.10.15

* 说 明: 创建

*******************************************************************************/

#include

//

// CRC16码表

//

static uint16_t const CRC16Table[256] = {

0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241,

0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440,

0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40,

0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841,

0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40,

0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41,

0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641,

0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040,

0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240,

0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441,

0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41,

0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840,

0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41,

0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40,

0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640,

0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041,

0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240,

0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441,

0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41,

0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840,

0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41,

0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40,

0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640,

0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041,

0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241,

0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440,

0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40,

0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841,

0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40,

0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41,

0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641,

0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040

};

/*******************************************************************************

* 函数名称: CRC16

* 功能描述: 查表法计算CRC16.

* 输入参数: dataIn -- 待校验数据

* length -- 数据长度

* 返 回 值: 校验值

*******************************************************************************/

uint16_t CRC16(uint8_t* dataIn, int length)

{

uint16_t result = 0;

uint16_t tableNo = 0;

for(int i = 0; i < length; i++)

{

tableNo = ((result & 0xff) ^ (dataIn[i] & 0xff));

result = ((result >> 8) & 0xff) ^ CRC16Table[tableNo];

}

return result;

}

crc16modbus查表法_查表法计算CRC16校验值相关推荐

  1. crc16码表的使用_查表法计算CRC16校验值

    CRC16是单片机程序中常用的一种校验算法.依据所采用多项式的不同,得到的结果也不相同.常用的多项式有CRC-16/IBM和CRC-16/CCITT等.本文代码采用的多项式为CRC-16/IBM: X ...

  2. 常用crc查表法_查表法计算CRC

    (查表法)CRC检验码的计算过程 (1)将上次计算出的CRC校验码右移一个字节: (2)将移出的这个字节与新的要校验的字节进行XOR 运算: (3)用运算出的值在预先生成码表中进行索引,获取对应的值( ...

  3. arctan查表法_查表法

    查表法是将一些事先计算好的结果,存储在常量数组中,运行时节省计算开销. 例如, 计算字节中位1的个数, int countBits( unsigned char dat ) { static char ...

  4. ahp层次分析法_层次分析法在历史街区研究中的应用简析

    摘要 AHP (Analytic Hierarchy Process)层次分析法通常被运用于解决多目标.多标准.多要素.多层次的非结构化的复杂决策性问题,特别是战略决策性问题,在建筑.规划.风景园林等 ...

  5. sql跨表查询_跨表查询经常有,何为跨表更新?

    有点 SQL 基础的朋友肯定听过 「跨表查询」,那啥是跨表更新啊? 背景 项目新导入了一批人员数据,这些人的有的部门名称发生了变化,有的联系方式发生了变化,暂且称该表为 t_dept_members, ...

  6. sql跨表查询_跨表更新,看到自己写的SQL像个憨憨

    有点 SQL 基础的朋友肯定听过 「跨表查询」,那啥是跨表更新啊? 背景 项目新导入了一批人员数据,这些人的有的部门名称发生了变化,有的联系方式发生了变化,暂且称该表为 t_dept_members, ...

  7. jpi多表联查_多表连接查询详解

    1.笛卡尔积形式------无条件 select * from tb_a,tb_b tb_a和tb_b表中的所有记录相互匹配成新的记录 tb_a tb_b 结果: 2.左连接 查询步骤:从左表读出一条 ...

  8. excel 查询 表关联_在Excel中计算查询表

    excel 查询 表关联 A few years ago, Ron Coderre created his PivotPlay PLUS Add-in that you can download fr ...

  9. mysql表结构设计_数据库表结构设计

    1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对 应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证 ...

最新文章

  1. 迄今最详细宇宙模型建成
  2. java.lang.UnsupportedClassVersionError解决方案
  3. MS SQL 排序规则总结
  4. 2019ICPC(南京) - Holy Grail(最短路)
  5. IOS12上微信中点击不到表单的bug
  6. 前端框架Bootstrap简单介绍
  7. 《开源框架那点事儿14》:教计算机程序解数学题
  8. 一个傻傻的尼姆游戏及其Python实现
  9. sublime Text 2使用小技巧
  10. 会计计算机学什么软件有哪些,会计一般要学什么软件
  11. HTML5网页设计基础——拼图效果
  12. jsp内置对象 application
  13. 10个免费的英文企业名称及品牌生成器
  14. 计算机问题的分步骤解决被称为,用计算机解决问题的过程.ppt
  15. 换一种姿势挖掘任意用户密码重置漏洞
  16. matlab的imshow python中cv2.imshow及plt.imshow相关测试
  17. html中input标签中type属性小总(包含html5新增表单属性)
  18. webp图片怎么批量转换成jpg等常用格式
  19. 一个完整的URL地址包含什么
  20. status(状态);

热门文章

  1. SAP提请法院向甲骨文支付不超4亿美元赔偿金
  2. BCH或许才是真正的未来
  3. Linux修改mysql的密码
  4. 跟我学Spring Cloud(Finchley版)-10-Feign深入
  5. Python 闭包相关之late binding机制
  6. Shiro SpringMVC 非maven HelloWorld
  7. zabbix3.2监控centos6网卡流量
  8. php之cookie
  9. iOS数据库操作之FMDB
  10. Apache 配置关闭文件目录浏览