总也搞不明白的CRC校验,终于有点头绪了,
本人喜欢钻牛角尖,花了两天时间看了SD卡的物理协议英文版,对于英文文盲的我来说,100多页的文档看下来真是死去活来啊!因为SD协议里有好多的CRC,就想看看。
好吧,书归正传,还是来说说CRC。本人比较愚钝,花了4天时间才有点头绪。
网上关于CRC的文章很多,百度文库能搜出一片。很多都是片段,脑袋笨笨的我不太理解,于是在网上找呀找,终于找到几篇我能看懂的。
很多文章中讲了好几种CRC校验的C语言实现,有直接算的,有“驱动表”,还有直驱表法。其实他们的最终实现都是模拟了CRC的计算原则,只不过效率一个比一个高。
关于驱动表的程序和直驱表的程序就不多说了,网上有很多很多。大家大可拿来主义,拿来用用是没有问题的。可如果想搞明白其中的原委,可以看看我推荐的这几篇文章。
1 《我学习 CRC32、CRC16、CRC 原理和算法的总结(与 WINRAR 结果一致)》,百度文库就有。写的很好,如果不明白的可以接着往下看..
2 《循环冗余校验(CRC)算法原理》 非常直观的讲解 ,只有原理,没有程序,但写的非常好。原文是博客园上的。
3 《CRC我就拿下了》,也是博客园上的,非常好。
4 《CRC算法原理和C语言实现》一篇论文,里面是数学证明,我看不懂,有能力的朋友可以仔细看看,应该没错了。
基本上1,2,3这三篇文章就能帮你搞定CRC了。
4篇文档的PDF文档放在附件里
就在这跨年了。
4.pdf
(168.74 KB)
3.pdf
(35.26 KB)
2.pdf
(404.67 KB)
1.pdf
(172.37 KB)
|