首页 > 其他分享 >每日一个软考知识点之【CRC校验】

每日一个软考知识点之【CRC校验】

时间:2023-08-11 14:33:58浏览次数:39  
标签:知识点 true 软考 校验 POLY CRC 位数 原始数据

CRC校验的原理

(此图引用自知乎)

发送方可以通过一定的算法生成校验位,然后接收方通过相同的算法验证一边,确保数据的真实性完整性。

 

几个重要的概念

POLY:可以多项式表达,也可以用2进制或者16进制来表达,比如说多项式为G(x) = x^5 + x^3 + x + 1,用二进制显示就是101011,用十六进制显示就是0x2B,

这里有一个要求,就是二进制的第一位和最后一位必须为1。

校验值:经过计算,最后求得的校验值的位数比这个POLY的二进制位数肯定少一位。

原始数据:就是传输的原始数据。注意在计算校验值之时,原始数据需要向左移动校验值的位数。

REFIN:true或false,在进行计算之前,原始数据是否翻转,假如这个值为true,说明原始数据需要翻转,比如说原始数据时111000110,

那么反转后为:011000111。

REFOUT:true或false,运算完成之后,得到的CRC值是否进行翻转,假如这个值为true,说明得到的CRC校验值需要反转,

假如得到的CRC校验值为:11001,那么反转后为:10011.

 

计算CRC值的详细步骤

1.确定原始数据,如果REFIN为true时,还需要对原始数据进行翻转操作。

2.确定POLY,把多项式或者16进制,转化为二进制。

3.验证最终得到的校验值的二进制位数,等于POLY二进制的位数减1,如果不等于,说明在转化POLY的时候出错了。

3.把原始数据进行左移,移动的位数为最终得到的校验值的位数。

4.对原始数据和POLY二进制的值,使用模2除法,获得余数,就是校验值。核对位数是否等于第三步中确定的位数,如果对不上,就是算错了。

 

模2除法如何计算

1.被除数第一位为1时,商为1,把除数作为结果,进行异或运算。

2.去掉结果的第一位,把原始被除数的后一位移下来补上。

3.这个时候去看新的被除数的第一位是否是1,如果是1,再记商为1,把除数作为结果,进行异或运算;如果不是1,记商为0,把新的被除数的第一位再划掉。

4.重复第二步和第三步,直到余数的位数等于预定的位数,或者直到把商写满,(这两者其实是一定一起发生的)。

例子:

 

 

注意:得到了CRC检验值后,验证一下位数是否正确。然后看下REFOUT的值,需要翻转的话,再翻转一下。

 

本文参考:

https://zhuanlan.zhihu.com/p/256487370

标签:知识点,true,软考,校验,POLY,CRC,位数,原始数据
From: https://www.cnblogs.com/littlesky123/p/17622887.html

相关文章

  • 软件设计师考试(软考)
    1、考试时间5月或11月;报名时间4月或10月,提前关注官网https://www.ruankao.org.cn/2、考试题型,上午单选,75题,每题1分,45分过;下午5道大题,每题15分,45分过,上下午都考过才算过3、关于备考1)买一本教材,第五版软件设计师,蓝皮的,一共12章,可以大致浏览每章内容,几乎每一章都会考到......
  • 2023下半年广州/深圳软考高级信息系统项目管理师报名
    信息系统项目管理师是全国计算机技术与软件专业技术资格(水平)考试(简称软考)项目之一,是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试,既属于国家职业资格考试,又是职称资格考试。信息系统项目管理师,属于软考三个级别中的“高级”。  【报考要求】 不设学历与资历......
  • C/C++基础知识点
    C和C++的区别C++是C的超集,C是面向过程化的结构性语言,而C++是面向对象的编程语言C语言更偏向于底层,使用较为灵活,可移植性强,而C++更偏向于上层,可扩展性强,对于大型项目往往使用C++C++在C语言的基础上提出了STL标准模板库,函数模板等特性static关键字的作用隐藏,凡事变量前添加s......
  • MYSQL数据库知识点
    CONCAT()函数的使用方法--双列合并SELECTCONCAT(id,'@',number2)FROMtable1--多列合并SELECTCONCAT(id,'AA',number,'B',number2)FROMtable1table1的数据以及拼接后的效果  DATE_FORMAT()时间格式化函数 ......
  • 使用C#配合modbus协议的16进制代码生成crc16校验码的计算方法
    前言在网上也是查看了很多关于crc16校验的文章,但是好像都是对于有基础的人看的,我当时拿起直接使用,发现行不通,这对于零基础的不是很友好,所以决定贡献一篇,哈哈哈哈~~~publicuintCalcCRC16(stringhexCommand){byte[]pBuf=HexStringToByteArray(......
  • MySQL中的锁知识点总结
    MVCC和加锁是解决并发事务带来的一致性问题的两种方式。共享锁简称为S锁,独占锁简称为X锁。S锁与S锁兼容;X锁与S锁不兼容,与X锁也不兼容。事务利用MVCC进行的读取操作成为一致性读,在读取记录前加锁的读取操作称为锁定读。InnoDB有两种语法来进行锁定读:select..lockinsharemode......
  • 2023年8月广州/深圳软考中级系统集成项目管理工程师报名
    系统集成项目管理工程师是全国计算机技术与软件专业技术资格(水平)考试(简称软考)项目之一,是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试,既属于国家职业资格考试,又是职称资格考试。 系统集成项目管理工程师,属于软考三个级别中的“中级”。  【报考资格】 不设......
  • 软考VSPMP,哪个才是适合职业转型的敲门砖?
    软考中高项和PMP® 都是项目管理方向的考试,对于想在项目管理领域取得更高成就的同学来说,这两个考试都是不可忽视的选择。 那么,要如何选择最适合自己的考试呢?软考和PMP® 又有什么区别呢?考试类型软考是计算机技术与软件专业技术资格(水平)考试的简称,是由人社部、工信部领导下的国家......
  • F5 LTM 知识点和实验 12-使用规则和本地流量策略定制应用程序交付
    第十一章:iapp(忽略)第十二章:使用规则和本地流量策略定制应用程序交付用最简单的术语来说,iRule是在网络流量通过BIGIP系统时对其执行的脚本。其思想非常简单:规则使您能够编写简单的网络感知代码片段,这些代码以各种方式影响您的网络流量。无论您是希望以BIG-IP内置选项中目前无法提......
  • 操作系统基本知识点
     P1:自己动手写操作系统P2:  操作系统相关概念P3: 高级操作系统特性P4:时间片轮转与上下文切换 -------------来源参考B站黑马程序员操作系统入门 P5:  操作系统与资源调度P6:  资源调度与资源争抢P7:  中断和实时操作系统 P8: 操作系统概念总......