这段时间做一个项目要进行MAVLINK的解包校验,但有一个叫做 CRC_EXTRA的位导致这个校验码怎么算结果都不对,后来找了好久还是在github的论坛上看见别人讨论才找到方法的。
1、先上从官网上拿的mavlink包格式
图里字有点小,放大可以看到,最后两个字节是校验码,然后校验方法是CRC-16/MCRF4XX,校验范围是1-n+6(即除去包头和校验字节)再额外加上一个叫 CRC_EXTRA的东西。
2、首先说这个校验方法,之前不知道从哪里看到的说是用CRC16CCITT校验,看到官方的才发现原来是CRC-16/MCRF4XX。这个校验方法在这个网站有它的在线校验器,16进制(CRC16)(多项式异或,多种)校验(2),循环冗余校验在线计算器_三贝计算网_23bei.com。这里就说一下它的几个参数,
算法名称 多项式 初始值 结果异或 输入反转 输出反转
CRC-16/MCRF4XX 1021 FFFF 0000 true true
3、然后再说最关键的