移位法和查表法生成CRC16码在不同平台使用时的注意事项
这前有文章分享了CRC16码的两种生成方式,一种是移位法,另一种是查表法。
当时笔者在测试时都是在C51平台上测试的,用下来都没有发现什么问题。最近笔者在开发一款小工具,windows下的是用VS开发环境,首先采用的是移位法,可是得出的结果与之前单片机上生成的CRC16不同,开始以为是数据结构的问题,进行了检查修改,还是一新结果。后来便产生的移值查表法的算法来实现,结果就是对的了。由于只是开发一个自己用的小工具,没有对其中的原由再做深究。
后来,同事在写PC linux下的串口程序,也是用的是移位法,出来的结果,也是不对。换成查表法又正常了。
以上现像,初步分析是由于short型数据在不同平台上长度不一样导致。还望各位使用时注意了
凯特网版权声明:以上内容允许转载,但请注明出处,谢谢!