c语言crc算法,crc算法c语言实现

dfnjsfkhak 4 0

大家好,今天小编关注到一个比较意思的话题,就是关于c语言crc算法问题,于是小编就整理了3个相关介绍c语言crc算法的解答,让我们一起看看吧。

  1. CRC校验的算法?
  2. CRC计算方法?
  3. 超级CRC计算器HotCRC中的CRC表格和算法生成如何操作?

CRC校验的算法?

1. 选择合适的除数

2. 看选定除数的二进制位数然后再要发送的数据帧上面加上这个位数-1位的0,然后用新生成的帧以模2除法的方式除上面的除数,得到的余数就是该帧的CRC校验码。注意,余数的位数一定只比除数位数少一位,也就是CRC校验码位数比除数位数少一位,如果前面位是0也不能省略。

c语言crc算法,crc算法c语言实现-第1张图片-芜湖力博教育咨询公司
图片来源网络,侵删)

3. 将计算出来的CRC校验码附加在原数据帧后面,构建成一个新的数据帧进行发送;最后接收端在以模2除法方式除以前面选择的除数,如果没有余数,则说明数据帧在传输的过程中没有出错。

基于位运算的算法是非常慢的而且效率很低。因此,在实际使用中不推荐使用“计算法”来生成CRC校验码,而建议使用“查表法”来进行CRC校验码计算。

半查表法既计算又查表,表占用空间小,适合文件或者数据包校验;全查表法是标准查表法;双8位表全查表法表量大,查询方便,适合大文件校验。

c语言crc算法,crc算法c语言实现-第2张图片-芜湖力博教育咨询公司
(图片来源网络,侵删)

因此,如果你的磁盘文件体积一般,建议使用全查表法,如果比较大如安装包,建议使用双8位表全查表法。

CRC计算方法

CRC(循环冗余校验)计算方法是一种常用的数据校验方法,它可以有效检测在数据传输过程中可能产生的错误。 具体的计算方法是:使用一个多项式,把 原数据和校验码[通常是一个字节]作为输入参数, 使用循环冗余校验算法,将校验码和原始数据进行处理,再求出指定位数的校验码,该校验码就是最终的CRC校验码。

超级CRC计算器HotCRC中的CRC表格和算法生成如何操作

HotCRC计算器内自带的CRC表格和C语言源码生成功能非常强大,它可以生成任意CRC多项式下的CRC表格和5种CRC算法的C语言源码。

c语言crc算法,crc算法c语言实现-第3张图片-芜湖力博教育咨询公司
(图片来源网络,侵删)

操作方法非常简单,只要在左侧选择“功能”下拉选择框,选择“CRC表格和C语言”,或快捷地连续点击“功能”键按钮。此时“运算”键按钮就会变成“生成”键按钮。

当只要CRC表格时,可以选择“.TAB”,点击“生成”键按钮后,只生成了C语言的CRC表格数组

需要源码时,请选择“.C”。(开机默认)点击“生成”。键按钮后,会生成C语言源码。

当需要学习,想看算法如何运行时,请选择“.SIM”。点击“生成”后,会在代码后加入调试信息。(仿真信息,它会模拟运行的每一步)

算法一共有五种:

大表和单表

小表和单表

大表和双表组合

小表和双表组合(特别适合8位单片机运算CRC16,它是8位运算,只有16*2个字节的表格)

到此,以上就是小编对于c语言crc算法的问题就介绍到这了,希望介绍关于c语言crc算法的3点解答对大家有用

标签: 校验 算法 crc