CRC校验的问题(c语言实现CRC校验和)
1. 前面的数 7A 01 00,计算的结果是0X4920

2. 那么把数据CRC加上

3. 测试代码,计算出来的结果对不上,什么情况?可是我把参考模型的全部都选了一遍,也对不上其中一个!!!

4. 换了套代码,还是一样的值,难道说,CRC检验的必须是双数字节吗?我输入的是5个,或许我可以输入6个测试一下,也不行
5. 去CRC官网看了一下

对比下代码发现,CRC-16用的多项式应该是0XA001,总上所述,第3步的代码是错误的。那么我有疑问,为啥第3步的代码居然还有人在用?而且使用正确,我猜测那套产生自己的CRC,又检验自己的CRC,说起来是定制化的一套CRC,不是标准的CRC,所以那套CRC只能自产自销,如果去校验另外一个人产生的标准的CRC数据就会出错了。

6. 下面是从gitHUB上下载的代码实际测试可用。https://github.com/lammertb/libcrc
uint16_t crc_sick( const unsigned char *input_str, size_t num_bytes ) {
uint16_t crc;
uint16_t low_byte;
uint16_t high_byte;
uint16_t short_c;
uint16_t short_p;
const unsigned char *ptr;
size_t a;
crc = CRC_START_SICK;
ptr = input_str;
short_p = ;
if ( ptr != NULL ) for (a=; a<num_bytes; a++) {
short_c = 0x00FF & (uint16_t) *ptr;
if ( crc & 0x8000 ) crc = ( crc << ) ^ CRC_POLY_SICK;
else crc = crc << ;
crc ^= ( short_c | short_p );
short_p = short_c << ;
ptr++;
}
low_byte = (crc & 0xFF00) >> ;
high_byte = (crc & 0x00FF) << ;
crc = low_byte | high_byte;
return crc;
} /* crc_sick */
CRC校验的问题(c语言实现CRC校验和)的更多相关文章
- CRC校验的实现
本例提供的是通过查表发来实现CRC校验. CRC余式表如下: unsigned int crctab[256] ={/*CRC余式表 */ 0x0000, 0x1021, 0x2042, 0x3063 ...
- [技术栈]CRC校验原理及C#代码实现CRC16、CRC32计算FCS校验码
1.CRC.FCS是什么 CRC,全称Cyclic Redundancy Check,中文名称为循环冗余校验,是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检 ...
- Verilog语言实现并行(循环冗余码)CRC校验
1 前言 (1) 什么是CRC校验? CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定.循环冗余检查(CRC)是一种数据传输检错功能, ...
- CRC校验的C语言实现
文章转自 循环冗余校验(CRC)算法入门引导 - Ivan 的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/liyuanbhu/article/details/7 ...
- CRC校验代码实现
1.CRC校验简介 CRC就是块数据的计算值,它的全称是“Cyclic Redundancy Check”,中文名是“循环冗余码”.CRC校验是数据通讯中最常采用的校验方式.在嵌入式软件开发中,经常要 ...
- 字符串CRC校验
字符串CRC校验 <pre name="code" class="python"><span style="font-family: ...
- 协议栈中使用crc校验函数
CRC校验介绍:循环冗余校验码,原理是多项式除法 ZigBee协议栈:能够使zigbee节点相互之间组网,数据传输,数据获取,数据显示 思路以及步骤: 1.因为IAR的程序是用c写的,所以上网查找如何 ...
- CEIWEI CheckSum CRC校验精灵v2.1 CRC3/CRC4/CRC5/CRC6/CRC8CRC10/CRC11/CRC16/CRC24/CRC32/CRC40/CRC64/CRC82/Adler32
CEIWEI CheckSum CRC校验精灵 是一款通用的循环冗余校验码CRC(Cyclic Redundancy Check).MD5.SHA1.SHA2.SHA3.HAVAL.SHAKE.TIG ...
- CRC校验原理和verilog实现方法(一)
1.CRC简介 CRC全称循环冗余校验(Cyclic Redundancy Check, CRC),是通信领域数据传输技术中常用的检错方法,用于保证数据传输的可靠性.网上有关这方面的博客和资料很多,本 ...
随机推荐
- 对日开发中 PG , PL , SE , PM 是什么
PG(ProGramer)指程序员. 这类人才在企业中所占数量最多,通常占到整个项目员工数的70%,也是企业中最紧缺的一类职位,一般为具有专业知识的软件工程技术人员. PL(project leade ...
- ES code study
pom.xml <?xml version="1.0" encoding="UTF-8"?><project xmlns="http ...
- 布局 Bootstrap Table的 文本内容 垂直居中
原文:https://blog.csdn.net/peng_hong_fu/article/details/70662979 样式(注意样式优先级): #div-component-info .tab ...
- Ultra Edit中的数据对齐
有时会用到Ultra Edit的数据对齐功能.比如,要求64个符号一组,从低位开始对齐.这时,如果数据长度不是一行长度的整数, 就会产生高位对齐.低位不足的问题.为了调整,往往需要逐行调整,很不方便. ...
- 7中漂亮的纯css字体
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- BFC、IFC、FFC、GFC
FC(Formatting Context) 它是W3C CSS2.1规范中的一个概念,定义的是页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素将如何定位,以及和其他元素的关系和相互作用. ...
- mac webstorm 安装破解
下载: 链接:https://pan.baidu.com/s/1A1afhcpPWMrQtOr1Suqs-g 密码:5r7b 激活码 K6IXATEF43-eyJsaWNlbnNlSWQiOiJLN ...
- CF1187F Expected Square Beauty(期望)
题目 CF1187F Expected Square Beauty 做法 \(B(x)=\sum\limits_{i=1}^n I_i(x),I_i(x)=\begin{cases}1&x_i ...
- SpringData 简单的条件查询
今天在写springdata条件查询时,JpaRepository的findOne方法,不知道是因为版本的原因还是其他原因,总是查询不出来数据 //springdata jpa版本为1.5.15,配置 ...
- Java 中List集合中自定义排序
/* 集合框架的工具类. Collections:集合框架的工具类.里面定义的都是静态方法. Collections和Collection有什么区别? Collection是集合框架中的一个顶层接口, ...