1、CRC校验的原理

https://www.cnblogs.com/liushui-sky/p/9962123.html

模二除法,除数根据多项式不同有很多种,CRC8,CRC16,CRC32,即使同样的CRC8还有几种不同的除数。

上述模二除法说到底就是一种异或操作,如何操作,请参考他人的视频:

[CRC校验]手算与直观演示

该视频就是用异或的方式实现模二除法。

知道了原理,如何编程呢,如果按照视频里的描述,如果我有一个10个字节长度的数据,与8位除数进行crc校验,岂不是要将所有数据串起来成为一个特别长的数据 unsigned int80,  不是的。

2、原理了解了,再来看如何编程,

https://blog.csdn.net/q1024165872/article/details/85274228

简而言之,先计算第一个字节的crc结果,然后把第一个字节的crc结果与第二个字节进行异或, 异或后的值再进行一次crc计算就可以了,多个字节也是反复这过程就好。

3、计算量来讲,每个字节数据要进行8次移位或者移位+异或(CRC8, CRC16,CRC32都是如此),之后前一个字节的crc结果再与后一个字节数据再进行异或,数据计算量不小。因此,可以采用查表法,查表法可以将每个字节与除数的crc计算通过一次查表完成,可以节省大量计算。对于CRC8表的大小是256byte,CRC16是512byte,不是256*256个byte,个人推断CRC32应该需要256*4个byte就够了。

4、CRC出错的概率

必须说明的是CRC不能百分百保证通过校验的数据都是可靠的,有一定的出错的概率。一般情况下,可以认为出错概率CRC8>CRC16>CRC32,可见容易计算的,往往可靠性也是最低的。

如果不是特别在乎出错的概率,我认为累加和校验则是一种性价比很高的校验方式,计算简单,纠错能力不比crc8校验差太多。

最后对引用网址及视频的作者表示衷心感谢。

关于CRC校验的一些总结相关推荐

  1. LabVIEW实现CRC校验

    目录 1.内部控件计算CRC校验 2.公式节点计算CRC校验 CRC(循环冗余校验),是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存 ...

  2. 32位crc校验码程序_CRC码计算及校验原理的最通俗诠释

    CRC校验原理 CRC校验原理看起来比较复杂,好难懂,因为大多数书上基本上是以二进制的多项式形式来说明的.其实很简单的问题,其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注 ...

  3. 计算机网络crc校验实验报告,CRC校验实现-实验报告(附主要实现代码)

    计算机网络 实验报告 班级:03计算机B班 实验名称:CRC校验实现 姓名:kikikind 学号:086 指导老师:何怀文 日期:2006-4-22 1.学习CRC循环冗余检验原理 2.掌握实现方法 ...

  4. android串口通讯奇偶校验,串口通讯奇偶数校验及CRC校验如何使用详解

    我们以前在学校使用串口基本都不用奇偶数校验都是采用硬件CRC(循环冗余校验码)校验的.但有时候为了数据传输的更加严谨和差错的处理会采用奇偶校验.这里简单说下软件上CRC校验是如何计算的. 所谓CRC是 ...

  5. STM32开发 -- CRC校验码

    如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/79518638 通信协议里有CRC校验码,计算从报文的起始字节到报文内容最后一 ...

  6. CRC校验原理及STM32 IAP在线升级程序

    CRC校验原理: 什么是CRC校验? CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定.循环冗余检查(CRC)是一种数据传输检错功能,对数据 ...

  7. 通信 / CRC 校验

    一.全称 Cyclic Redundancy Check,循环冗余校验 二.诞生原因 在数据传输中,校验传输的数据的准确性必不可少,传统的方法包括 1 校验.0 校验.奇偶校验(详细说明请看这里),这 ...

  8. 如何在html里加入验证码_如何把crc校验加入到对应的程序里?看高手怎么做

    我们现在已经搞清楚了crc校验的算法,本文我就向大家具体讲解一下如何把crc校验加入到我们的程序里. 1 .crc校验使用原理 crc校验在程序中运行的原理主要可以分为以下几步. 第一步:主站发送数据 ...

  9. jq校验输入框值变化时_谈谈自己对CRC校验的理解

    1.CRC是用来干嘛的? 检测数据传输过程中是否出现错误(某些位,或某几位,或者某块区域位错误). 2.CRC是否能校正数据传输中的错误? CRC只能检错,不能纠错.如果发现错误,可根据双方协议规定要 ...

  10. CRC校验算法的解析,暨对网上的CRC详解的补充

    一.CRC的形象理解 本文面向对CRC校验有一定基础的读者,如果你不懂,请戳这里.维基百科还有图解版的. 在CRC的具体实现中,如果要计算CRC的数据很长,一般都会用到寄存器,用来保存当前的计算到的C ...

最新文章

  1. uber_Uber是如何制成的
  2. iOS: ios视频播放(MPMediaPlayerController,AVPlayer,AVPlayerViewcontroller、ffmpeg-AVPlayer)...
  3. idea的logback的getter和setter方法失效
  4. 《柯南 绯红色的子弹》 观后感
  5. 微型计算机主机箱内的所有部件均由大规模,2012年自考《计算机应用基础》模拟试题...
  6. TIOBE 12月编程语言排行榜:Python有望第四次成为年度语言
  7. [导入]C#面向对象设计模式纵横谈(21):(行为型模式) Memento 备忘录模式.zip(9.73 MB)...
  8. GAMP|Visual Studio 2019环境下配置GAMP
  9. FCM算法的matlab实现(Fuzzy C-means 算法)
  10. 一文看懂马尔科夫过程
  11. 问题解决:ROS gazebo中加载模型后没有rostopic话题列表
  12. maya安装步骤 新手安装软件基础教程(附安装包)
  13. Git入门基础-Chivalrous-专题视频课程
  14. STM8系列单片机程序的下载方式
  15. 关于WiFi和信号图标出现感叹号消除办法
  16. BoundsChecker简易使用教程
  17. MySQL常用操作总结
  18. BZOJ 1615: [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机 bfs
  19. (〇)SpringCloud之SpringCloud是什么
  20. python中treenode_python ElementTree 基本读操作示例

热门文章

  1. 怎么选择外贸邮箱,收费企业邮箱大全
  2. 消费卡“裸奔”倒计时!商务部:排查风险,异常发卡企业将上“黑名单”
  3. 浏览器的id_在浏览器的环境下学习ES6的模块化
  4. 电脑城最简单骗局,仍然有无数人上当
  5. qtableview点击行将整行数据传过去_三部评分达到九分以上的电视剧,琅琊榜甄嬛传在列...
  6. 墨哥视角,微软大八系,能大发么?(一)——surface
  7. 博士生导师谈他如何检索文献
  8. Python学习第一天
  9. 在立创商城上快速制作PCB原理图库
  10. ios越狱python插件_人生苦短,我用Python – 越狱后如何在IOS设备上玩Python编程,2018-07-11 – 算法网...