CRC(循环冗余校验)笔记

循环冗余校验是一种用于校验通信链路上数字传输准确性的计算方法(通过某种数学运算来建立数据位和校验位的约定关系的 1 )。发送方计算机使用某公式计算出被传送数据所含信息的一个值,并将此值 附在被传送数据后,接收方计算机则对同一数据进行 相同的计算,应该得到相同的结果。如果这两个 CRC结果不一致,则说明发送中出现了差错,接收方计算机可要求发送方计算机重新发送该数据。

CRC循环冗余计算示例:

首先先要确定多项式公式,根据客户或者研发提供的研发提供的,如G(X) = X4 + X + 1,由此可以算出多项式二进制序列为:10011(二进制的总位数是多项式公式X最高次幂加1),因为X3,X2在多项式中不存在,可以当中0处理,故多项式整个公式可以这么写:G(X) = X4 + 0(X3) + 0(X2) + X + 1。

因为CRC校验位为4位,假设现在有一组24BIT原始数据是8C 6C AE,我们通过CRC校验去算有效数据的CRC和抓取的CRC是不是一致的(因为CRC为4位,则原始数据的E(最低4位)为CRC数)有效数据为08 C6 CA,去掉CRC位后,整个数据右移4位,故就可以通过网页设置,计算出来校验结果,与抓取到的CRC一致

也可以通过手动计算算出CRC的值:

把原始数据8C 6C AE的校验位E改为0,即8C 6C A0,转换成24位二进制:

1000 1100 0110 1100 1010 0000

把该24位二进制除以多项式二进制(10011),得到余数(4位二进制)即CRC数

剩下4位为CRC的数据,和网页上计算的一样

相关推荐
星恒随风2 分钟前
C++ STL 详解:set 与 multiset 的使用、区间查询和算法应用
开发语言·c++·笔记·学习·算法
xx240622 分钟前
前端性能优化笔记
前端·笔记·性能优化
是上好佳佳佳呀1 小时前
【机器学习|DAY06】集成学习(Ensemble Learning)笔记
笔记·机器学习·集成学习
kdxiaojie1 小时前
Linux 驱动研究 —— V4L2 (14)
linux·运维·笔记·学习
FellAveal14 小时前
【Go语言入门学习笔记】Part18.工作池与WaitGroup(也即协程池)
笔记·学习·golang
xqqxqxxq15 小时前
Java Socket 多人聊天室(私聊+群聊)技术笔记(V4版本)
java·网络·笔记
龙仔72515 小时前
人大金仓OS_Core数据库自动备份实施笔记(银河麒麟Linux)
linux·数据库·笔记·备份·人大金仓
Z59981784116 小时前
c#软件开发学习笔记--Modbus-RTU通讯
笔记·学习·c#
quanjui18 小时前
【医学尝试】基于Segment Anything Model的医学图像分割研究:眼底OCT与X线胸片微调实战
人工智能·笔记·学习
小黄蚁18 小时前
FreeRTOS学习笔记(十二)
笔记·学习