打印
[CRC可逆]

《CRC 算法原理及 C 语言实现》

[复制链接]
4276|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lxyppc|  楼主 | 2012-10-30 16:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lxyppc 于 2012-10-30 16:55 编辑

上传一本书,几年前我就是看着这本书入门的CRC计算 CRC 算法原理及 C 语言实现.pdf.zip (27.1 KB)
这本书应该也是根据别人的资料整理出来的,里面详细地说明了网上这些CRC计算代码是如何推导出来的,也说明了查表公式的原理
喜欢知其所以然的朋友可以看一下,并且动手推导一下
这书我也放在我的google网盘上,可以在线看https://docs.google.com/open?id=0B46Qjscx7LoPbkNzNXF6ZUVnQTQ

相关帖子

沙发
lxyppc|  楼主 | 2012-10-30 17:03 | 只看该作者
本帖最后由 lxyppc 于 2012-10-31 09:45 编辑

上楼的文档中推导出式3-5直接就得到了代码如果想不明白的话我这里有一个简单推导的过程



下面是在线文档的位置
https://docs.google.com/document/d/1XLLIHphbWDcDzijAa4T0L6I4um4GRe9y1x8LdtzE9rs/edit

使用特权

评论回复
板凳
lxyppc|  楼主 | 2012-10-30 17:10 | 只看该作者
书中使用了按位求余数的方法来推导CRC的计算公式,用的是多项式的方式
这里我用一个十进制数来说明按位求余的过程
待校验的数据为8375,多项式为7
根据CRC的算法,实际上就是求8375*10除以7的余数
计算过程中使用正常的10进制算法,计算过程如下

使用特权

评论回复
地板
lxyppc|  楼主 | 2012-10-31 10:14 | 只看该作者
其实不光十进制的数可以用这样的方式来按位求余数,16进制,256进制的数都可以用这样的方式来求
看到16进制,256进制,估计有人已经想到什么东西了
是的,16进制就是4Bit的数据,256进制就8Bit的数据
16进制相当于是CRC的查半表,一次计算4个bit
256进制相当于是CRC的查全表,一次计算8个bit

使用特权

评论回复
5
yinhaix| | 2015-5-25 14:47 | 只看该作者

使用特权

评论回复
6
hotpower| | 2017-6-6 22:40 | 只看该作者
不错,是有大表和小表之分的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:代码发BBS不好看?你需要它 代码着色https://bbs.21ic.com/icview-135254-1-1.html

27

主题

2249

帖子

19

粉丝