手推CRC校验(纯干货,看必懂)

您所在的位置:网站首页 crc16校验码怎么算 手推CRC校验(纯干货,看必懂)

手推CRC校验(纯干货,看必懂)

2024-03-10 21:23| 来源: 网络整理| 查看: 265

网上CRC校验如何计算的相关的教程非常多,但是不够干,这次的CRC校验的笔记纯干货通俗易懂。

CRC即循环冗余校验,是数据通讯中用来校验错误的,是一串二进制数。概念知道这些就够了,我们要研究这串数怎么来的。

具体研究怎么算之前,先说一个计算机中的基础运算:异或运算(XOR是运算符),之后计算要用到。 例:0 XOR 0 = 0 0 XOR 1 = 1 1 XOR 0 = 1 1 XOR 1 = 0

然后了解一下多项式,通过多项式可以得到CRC算法中的CRC除数,这个除数由多项式的系数组成二进制数。比如 1 ∗ X 6 + 0 ∗ X 5 + 1 ∗ X 4 + 0 ∗ X 3 + 1 ∗ X 2 + 1 ∗ X 1 + 1 ∗ X 0 1*X ^ 6 + 0*X^5 + 1*X^4 + 0 * X^3 + 1* X^2 +1*X^1 + 1* X^0 1∗X6+0∗X5+1∗X4+0∗X3+1∗X2+1∗X1+1∗X0 可以由每一项的系数得到二进制数1010111(通常第一位和最后一位的系数必须为1),这个多项式可以简写成: X 6 + X 4 + X 2 + X + 1 X ^ 6 + X^4 + X^2 +X + 1 X6+X4+X2+X+1

通过上述内容通过分解多项式得到了CRC除数,然后开始进入运算过程:

首先需要一个二进制数据串,这个数据串也就是通讯中传送的数据,需要被验证的那一个,比如:00010001

第二步需要 在数据串末尾加0,加多少个0由上述 多项式的阶数决定,上述多项式最高位是X的6次方,那么就就在末尾加6个0,这样数据串就变成了:00010001000000,作为被除数数据串,与CRC除数进行模2除法,我们不用管什么是模2除法,第三步会说明这个运算的流程,可以直接忽略名称,不难。(不要问为什么补0)

第三步,我们有了数据串也有了CRC校验码,开始计算校验和。 (1)将数据串的第一个1与CRC除数左对齐,每一位按位异或, 数据串第一个1与CRC除数左对齐 (2)将未处理的数据搬下来作为新数据串与CRC除数进行(1)中的运算 模2除法第二步 (3)重复(2)中的操作完成运算,直到数据串中所有数据都被处理过停止。得到的二进制数就是CRC校验和,这个例子的结果为111011。校验和的长度为CRC除数的长度减1,例如校验和为0011111,则校验和为011111(长度一定要满足)。 校验和为111011

将校验和加在1中最原始的数据串之后,就是带有 CRC校验的数据 00010001111011.

整体CRC校验的数据就是这么推算出来的,很白话,其中基本关键点都有例子。CRC有许多不同的算法比如CRC16和CRC32等等,他们的多项式不一样,自然原始数据长度也不同。 其实CRC在应用当中完全不需要手算,但是闲来无事当作练习算一算也可以。



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3