CRC循环冗余校验码

  • 1 介绍
  • 2 CRC循环冗余校验码计算器
  • 3 C++和QT实现的CRC-16/MODBUS的代码
  • 4 和校验并取8位(1字节)作为计算结果

1 介绍

循环冗余校验码(CRC),简称循环码,是一种常用的、具有检错、纠错能力的校
验码,在早期的通信中运用广泛。 循环冗余校验码常用于外存储器和计算机同步
通信的数据校验。
奇偶校验码和海明校验码都是采用奇偶检测为手段检错和纠错的(奇偶校验码不具
有纠错能力),而循环冗余校验则是通过某种数学运算来建立数据位和校验位的约
定关系的。
和校验要比奇偶校验码靠谱。

2 CRC循环冗余校验码计算器

http://www.ip33.com/crc.html

3 C++和QT实现的CRC-16/MODBUS的代码

#include "mainwindow.h"
#include <QApplication>
#include <QByteArray>
#include <QDebug>
#include <string>
#include <stdio.h>uint16_t MODBUS_crc16(uint8_t *ptr, uint16_t len)
{unsigned char i;unsigned short crc = 0xFFFF;if (len == 0) {len = 1;}while (len--) {crc ^= *ptr;for (i = 0; i<8; i++){if (crc & 1) {crc >>= 1;crc ^= 0xA001;} else {crc >>= 1;}}ptr++;}return(crc);
}
int main(int argc, char *argv[])
{QApplication a(argc, argv);QByteArray ba;//0~18为校验数据,19~20为低校验位和高校验位ba.resize(21);ba[0] = '\x09';ba[1] = '\x03';ba[2] = '\x10';ba[3] = '\x00';ba[4] = '\x00';ba[5] = '\x00';ba[6] = '\x00';ba[7] = '\x00';ba[8] = '\x00';ba[9] = '\x00';ba[10] = '\x00';ba[11] = '\x00';ba[12] = '\x00';ba[13] = '\x00';ba[14] = '\x00';ba[15] = '\x00';ba[16] = '\x00';ba[17] = '\x00';ba[18] = '\x00';ba[19] = '\x06';ba[20] = '\x38';//将低校验位和高校验位交换位置QByteArray crc_real_tmp;crc_real_tmp.append(ba[ba.size() - 1]);crc_real_tmp.append(ba[ba.size() - 2]);bool ok;uint16_t crc_real = crc_real_tmp.toHex().toInt(&ok,16);uint8_t data [19];memcpy(&data, ba.mid(0,19), 19);uint16_t crc_res = MODBUS_crc16(data, 19);if(crc_res == crc_real) {qDebug()<<"true";}else {qDebug()<<"false";}return 0;
}

4 和校验并取8位(1字节)作为计算结果

bool ChargingPile::_verifySum(int index){uint16_t sum = 0;bool ok;for(int i = 0; i <= 4; i++){sum += _buffer[index + i].toHex().toInt(&ok,16); }uint16_t checksum = sum % 256; #取1字节uint16_t checkValue =  _buffer[index + 5].toHex().toInt(&ok,16);if(ans == checksum){return true;}return false;
}

CRC循环冗余校验码计算器(附C++ 和Qt实现的CRC-16/MODBUS代码)相关推荐

  1. CRC循环冗余校验码总结

    一.CRC简介 先在此说明下什么是CRC:循环冗余码校验 英文名称为Cyclical Redundancy Check,简称CRC,它是利用除法及余数的原理来作错误侦测(Error Detecting ...

  2. CRC 循环冗余校验码 的计算方法

    循环冗余校验CRC(Cyclical Redundancy Check)字段位于尾部,有32位,有时称为IEEE/ANSI标准的CRC32.要使用一个n位CRC监测 数据传输错误,被检查的消息首先要追 ...

  3. 16位CRC循环冗余校验码生成函数

    16位的CRC校验码生成,可使用以下函数: //16位CRC校验码生成 //返回值:CRC校验码 unsigned int CRC_check(unsigned char *addr,int num) ...

  4. 循环冗余校验码CRC原理和实例

    今天同事问了一个CRC(循环冗余校验码)的问题,好奇心之下学习了一下. 首先说它的原理,百度百科上也有,我就简单说一下,它其实就是采用多项式编码的方法,对于要发送的信息码R,发送方和接收方约定好多项式 ...

  5. 终于弄懂 CRC 循环冗余校验 辽

    概述 CRC 即 Cyclic Redundancy Check 的缩写 CRC 循环冗余校验属于检错码,只能检测出现了错误,但无法纠正错误. 与CRC循环冗余校验类似的,还有奇/偶校验,但是 CRC ...

  6. CRC循环冗余校验是如何纠错的

    引言 昨天同学突然问我CRC循环冗余校验是如何纠错的?我突然大脑一片空白,学过校验码自然知道CRC循环冗余校验码是可以检错和纠错,但是仿佛只知道求出检验码和检错的过程,但是不知道如何纠错的过程,查询书 ...

  7. CRC冗余校验码源码代码c语言,循环冗余校验码(CRC)应用总结(包括C++源码)

    最近在实习期间需要用到数据的校验,所选为CRC16,那么就在此总结一番吧. 现在此说明下什么是CRC:循环冗余码校验 英文名称为Cyclical Redundancy Check,简称CRC,它是利用 ...

  8. 循环冗余校验码CRC,求解步骤

    循环冗余校验码CRC,是软考-计算机组成原理 中一种重要的编码. 下面只是简要描述求解CRC码的解题步骤,面向有一定理论基础的朋友. 直接看例题. 例.信息位: 10100110   生成多项式: 解 ...

  9. 第二章 数据的表示和运算 2.1.6 循环冗余校验码/CRC码 [计算机组成原理笔记]

    第二章 数据的表示和运算 2.1.6 循环冗余校验码/CRC码 本笔记参考书目: 计算机组成原理(第六版.立体化教材)白中英.戴志涛 2021王道计算机组成原理视频公开课 本节重点: 循环冗余校验码/ ...

  10. 计算机组成原理:循环冗余校验码CRC具备“一位纠错”功能的思考与探索

    笔者在阅读华中科技大学谭志虎老师主编的<计算机组成原理(微课版)>教材进行复习时,产生了一个疑问,并针对性地进行了一些思考.欢迎广大复习到这里同样有问题的同学(寒假开学接着考试实在有点汗, ...

最新文章

  1. 【linux基础】重命名文件和文件夹
  2. springboot 搭建分布式_爱了!阿里巴巴内部出品“SpringBoot+微服务指南”,理论与实战...
  3. html链接sqlserver,js连接sqlserver进行查询
  4. 两个3*3*n旋转矩阵在第三维相乘
  5. VS2010打开VS2013、VS2015建立的工程,各种版本之间转换
  6. 【ENVI】shp文件裁剪需要注意的问题
  7. [Qt笔记]设置VS2015下的应用工程图标
  8. 【云驻共创】初探数通网络开放可编程
  9. Android各种时间格式转换
  10. U盘有容量有一半不见了,修复U盘
  11. c++最近公共祖先LCA(倍增算法和tarjan)
  12. 福玛特机器人怎么开机_五一解放双手的选择 福玛特扫地机器人解救你
  13. Java—通过sign签名认证实现安全的开放接口API
  14. ios播放本地声音文件
  15. Android常用五大平台上架详解
  16. c语言的离骚,高中必修一语文离骚翻译及赏析
  17. 浏览器开发者工具菜鸡相谈
  18. 【量亿数据-量化交易学习】均线系统
  19. 华为od统一考试B卷【跳房子2】Python 实现
  20. c语言0的作用是什么意思,C语言 1 0 是什么意思

热门文章

  1. 手机拍的图片资料打印很黑怎么解决?
  2. 安装新版的winetricks_20170506-最新WineQQ8.9.1安装教程和常见问题解决方法
  3. python爬虫轻松下载某易云音乐
  4. 新版UNITY游戏(IL2CPP类型)使用内嵌型机器翻译插件XUnity.AutoTranslator的食用方法
  5. excel多元线性拟合_急,如何用excel拟合多元函数
  6. 从哥尼斯堡“七桥问题”到盖洛普“优势识别器”
  7. ERP能力计划与排产
  8. Scrapy库的安装,Scrapy爬虫框架简介
  9. 在线制作证件照教程,只需30秒
  10. 迅雷手机版苹果版_免费下载迅雷 iOS 版