当前位置:网站首页 > R语言数据分析 > 正文

uchar范围(uchar *s)



CRC-32校验产生4个字节长度的数据校验码,通过计算得到的校验码和获得的校验码比较,用于验证获得的数据的正确性。获得的校验码是随数据绑定获得。

CRC校验原理及标准CRC-8校验函数可参考:C语言标准CRC-8校验函数。这里介绍CRC-32的64位计算方式和简化的32位计算方式。

设计原理仍然基于无符号64位整型为一个计算单元,当超过64位时,将前一个单元的计算余数,与后面的输入数据重新组成64位数据,再进行模二除法,以此类推,得到最后的CRC-32校验值(余数)。设计按照CRC计算基本原理来实现,以契合理解对照。

这里的校验码采用标准校验码x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1,对于其它类型的CRC-32校验码或有输入数据前处理或输出数据后处理的情况,相应的做代码简单调整即可。CRC-32校验函数如下:

在理解了和CRC32校验原理完全一致的代码实现后,不采用64位计算方式,则可以简化代码为32位计算方式,可得到相同的校验值结果:

CRC查表原理通过输入数据分段计算(CRC-32可按四字节/单字节分段)原理实现校验码的计算,查表法有如下特点:

  1. 当前输入数据段值异或当前的查表值,得到当前的CRC计算余数
  2. 当前查表值由前一计算余数与校验码按CRC校验过程计算得到,并保存为对应前一计算余数对应的表位值
  3. 当前查表值的计算不受当前输入字段值影响,所以当前输入字段值为0且为最后字段时,当前查表值异或当前输入字段值不变,此时当前查表值即为CRC校验值结果。
  4. 由第2和3条可知,第2条在CRC校验过程计算时,移位补位时补0即可,也就不需要当前字段值进入移位补位过程。

CRC-32校验32位数据格式函数优化为如下代码,注意输入数据为32位数组:

CRC-32校验8位数据格式函数优化为如下代码,输入数据为8位数组:

查表法对应输入数据分段为四字节时,采用如上几种方式任何一种,对四字节0~的输入数分别进行CRC-32校验,得到的各个校验值,也就得到查表法对应每个输入数值的查表值。因为这种表数据量太大不会被实际用
查表法对应输入数据分段为单字节时,采用如上几种方式任何一种,对单字节0~255的输入数分别进行CRC-32校验,得到的各个校验值,也就得到查表法对应每个输入数值的查表值。

以上各种针对基本原理标准的校验函数计算结果相同。

CRC bytes 实现_c语言

CRC-32常用(事实标准)检验函数针对能够从硬件上进行比特流实时计算而设计,即每个数据的一位进来后马上就能进行CRC-32,而不必收全数据再计算。因此对应的软件CRC-32存在一些特点:

  1. 初始值预设为0xFFFFFFFF
  2. 针对数据字节的低位先传输场景,因此数据字节的低位是高优先处理的
  3. 按照字节分段进行CRC-32计算,字节放在寄存器的低字节,因此字节最低位在左高由低的最右边一位,在进行CRC计算过程时,要从最低位/最右侧位置开始判断,移位时向右移出。因为校验码高冥端也要相应对齐,所以检验码也就要做倒位序,如0x04C11DB7(0000 0100 1100 0001 0001 1101 1011 0111)倒序为了0xEDB88320(1110 1101 1011 1000 1000 0011 0010 0000)
  4. 输出异或0xFFFFFFFF

CRC-32常用(事实标准)校验函数为反向算法(反向算法是从由右向左计算,也即计算过程中移位时,向右移出。):

CRC bytes 实现_CRC校验_02

CRC bytes 实现_CRC校验_03

常用CRC32校验函数来自反向CRC32算法最简化的设计思想,而STM32格式CRC32校验函数来自正向CRC32算法最简化的设计思想, 参见《C语言CRC-32 STM32格式校验函数》。

–End–

到此这篇uchar范围(uchar *s)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • story怎么读(notebook怎么读)2026-05-13 21:54:08
  • redhat重置root密码(redhat修改root密码命令)2026-05-13 21:54:08
  • itower搜题软件下载(itower搜题app)2026-05-13 21:54:08
  • sweater(sweater的中文)2026-05-13 21:54:08
  • ewma模型和garch的区别(ewma模型中的λ参数)2026-05-13 21:54:08
  • grid布局兼容ie(grid布局兼容)2026-05-13 21:54:08
  • 删除虚拟环境(pycharm怎么删除虚拟环境)2026-05-13 21:54:08
  • win32tiggre(win32tiggre病毒)2026-05-13 21:54:08
  • treeplan下载(treearia下载)2026-05-13 21:54:08
  • store苹果商店为什么下载不了软件(苹果商店怎么下载不了apple store)2026-05-13 21:54:08
  • 全屏图片