问问题描述
crc16校验代码中,多项式码明明是8005为什么要用A001来异或,还有CRC16-REV=A001是什么意思,求解答求解答,重要的事说两遍!
答精选答案

0x8005=1000 0000 0000 0101B0xA001=1010 0000 0000 0001B对比两个二进制高低位正好是完全相反的,CRC校验分为正向校验与反向校验。正向校验高位在左,反向校验低位在左,比如正向CRC校验的数据为0xAF5D=1010 1111 0101 1101B与0x8005异或时应该是0xAF5D^0x8005,而要使用0xA001与数据进行校验也应该使0xAF5D高低位换顺序为0xBAF5=1011 1010 1111 0101B。
正向校验使用左移位,反向校验使用右移位,其实原理是一样的,得看校验的数据高低位顺序。
本文来自作者[henashifandaxue]投稿,不代表公众科技网立场,如若转载,请注明出处:https://www.cpst.net.cn/jingxuan/4083178.html
评论列表(4条)
我是公众科技网的签约作者“henashifandaxue”!
希望本篇文章《crc16校验代码中,多项式码明明是8005为什么要用A001来异或,还有CRC16-REV=A001是什么意思》能对你有所帮助!
本站[公众科技网]内容主要涵盖:教育咨询,知识百科
本文概览:0x8005=1000 0000 0000 0101B0xA001=1010 0000 0000 0001B对比两个二进制高低位正好是完全相反的,CRC校验分为正向校验与反向校验。正向校验高位在左,反向校验低位在左,比如正向CRC校验的数据为0xAF5D=1010 1111 0101 1101B与0x8005异或时应该是0xAF5D^0x8005,而要使用0xA001与数据进行校验也应该使0xAF5D高低位换顺序为0xBAF5