RTCM CRC-24校验计算

计算RTCM CRC-24校验
示例:
完整一帧RTCM数据

0xD3,0x00,0x85,0x3E,0xC2,0x0A,0x6B,0xD1,0xFD,0x62,0x81,0x04,0xB0,0x35,0xE6,
0x0B,0xC0,0x3F,0xD2,0xAA,0x30,0x2E,0x82,0xD1,0x4F,0xFC,0x40,0x6C,0x07,0xF9,0x50,0x5F,0x72,0xFE,0x8D,
0x71,0x81,0x52,0x15,0x37,0x3F,0xEA,0x06,0x20,0x62,0xCA,0x84,0x25,0x6F,0xF4,0xC9,0x8C,0x0E,0x51,0x16,
0x02,0xFF,0x30,0x71,0x86,0x7B,0x00,0x0D,0xAF,0xBF,0xA1,0xE0,0x60,0x11,0x82,0x10,0x9F,0xFB,0xC4,0x4F,
0x43,0xB7,0xE0,0x8A,0x7D,0xFD,0x1E,0xE3,0xFF,0xEC,0x1D,0x72,0xBF,0xE6,0x26,0x77,0x75,0x9D,0x00,0xEB,
0x5F,0xE9,0x55,0x1F,0xF3,0xE0,0x13,0xEB,0xFE,0x31,0xC2,0x98,0x37,0x38,0x0D,0xDC,0xFF,0x45,0xB8,0xFF,
0xDD,0x02,0x47,0x7F,0xF5,0x0F,0x0B,0x60,0x94,0x3F,0x30,0xA3,0xFA,0x84,0xC6,0x07,0x17,0xE8,0x42,0x7F,
0x8C,0x5B,0x08,0x27,0xD3,0x00,0x59,0x3F,0x42,0x0A,0x3B,0x27,0x11,0x02,0x80,0x24,0x10,0xAB,0xC0,0x80,
0x18,0x93,0xFA,0x5A,0xC4,0x20,0xC0,0x93,0xC9,0xFF,0x38,0x41,0xB5,0xD3,0x68,0x90,0x68,0xFA,0xFE,0x92,
0xE1,0x05,0x0C,0x1C,0xA6,0xBF,0xDA,0x1A,0x2B,0xC2,0x0C,0x3C,0x03,0x7E,0xFF,0xA2,0xA8,0x41,0x19,0x04,
0x9A,0x5F,0xF6,0x07,0x00,0x54,0x69,0x36,0x13,0x59,0x8F,0xE8,0xB4,0x10,0x4C,0x81,0x60,0x53,0xFE,0x23,
0x04,0xA8,0x27,0x2F,0x7F,0xD9,0xEB,0xFA,0x2C,0x84,0x12,0xF0,0xD4,0x7F,0xFF,0x78,0x29,0x3C,0xF7

校验值: 0x29,0x3C,0xF7

计算代码:

#include "stdio.h"
#include "stdlib.h"
#include "math.h"

unsigned char rtcm[]={0xD3,0x00,0x85,0x3E,0xC2,0x0A,0x6B,0xD1,0xFD,0x62,0x81,0x04,0xB0,0x35,0xE6,
0x0B,0xC0,0x3F,0xD2,0xAA,0x30,0x2E,0x82,0xD1,0x4F,0xFC,0x40,0x6C,0x07,0xF9,0x50,0x5F,0x72,0xFE,0x8D,
0x71,0x81,0x52,0x15,0x37,0x3F,0xEA,0x06,0x20,0x62,0xCA,0x84,0x25,0x6F,0xF4,0xC9,0x8C,0x0E,0x51,0x16,
0x02,0xFF,0x30,0x71,0x86,0x7B,0x00,0x0D,0xAF,0xBF,0xA1,0xE0,0x60,0x11,0x82,0x10,0x9F,0xFB,0xC4,0x4F,
0x43,0xB7,0xE0,0x8A,0x7D,0xFD,0x1E,0xE3,0xFF,0xEC,0x1D,0x72,0xBF,0xE6,0x26,0x77,0x75,0x9D,0x00,0xEB,
0x5F,0xE9,0x55,0x1F,0xF3,0xE0,0x13,0xEB,0xFE,0x31,0xC2,0x98,0x37,0x38,0x0D,0xDC,0xFF,0x45,0xB8,0xFF,
0xDD,0x02,0x47,0x7F,0xF5,0x0F,0x0B,0x60,0x94,0x3F,0x30,0xA3,0xFA,0x84,0xC6,0x07,0x17,0xE8,0x42,0x7F,
0x8C,0x5B,0x08,0x27,0xD3,0x00,0x59,0x3F,0x42,0x0A,0x3B,0x27,0x11,0x02,0x80,0x24,0x10,0xAB,0xC0,0x80,
0x18,0x93,0xFA,0x5A,0xC4,0x20,0xC0,0x93,0xC9,0xFF,0x38,0x41,0xB5,0xD3,0x68,0x90,0x68,0xFA,0xFE,0x92,
0xE1,0x05,0x0C,0x1C,0xA6,0xBF,0xDA,0x1A,0x2B,0xC2,0x0C,0x3C,0x03,0x7E,0xFF,0xA2,0xA8,0x41,0x19,0x04,
0x9A,0x5F,0xF6,0x07,0x00,0x54,0x69,0x36,0x13,0x59,0x8F,0xE8,0xB4,0x10,0x4C,0x81,0x60,0x53,0xFE,0x23,
0x04,0xA8,0x27,0x2F,0x7F,0xD9,0xEB,0xFA,0x2C,0x84,0x12,0xF0,0xD4,0x7F,0xFF,0x78,0x29,0x3C,0xF7};

int table[]=
{
0x000000, 0x864CFB, 0x8AD50D, 0x0C99F6, 0x93E6E1, 0x15AA1A, 0x1933EC, 0x9F7F17,
0xA18139, 0x27CDC2, 0x2B5434, 0xAD18CF, 0x3267D8, 0xB42B23, 0xB8B2D5, 0x3EFE2E, 0xC54E89, 0x430272,
0x4F9B84, 0xC9D77F, 0x56A868, 0xD0E493, 0xDC7D65, 0x5A319E, 0x64CFB0, 0xE2834B, 0xEE1ABD, 0x685646,
0xF72951, 0x7165AA, 0x7DFC5C, 0xFBB0A7, 0x0CD1E9, 0x8A9D12, 0x8604E4, 0x00481F, 0x9F3708, 0x197BF3,
0x15E205, 0x93AEFE, 0xAD50D0, 0x2B1C2B, 0x2785DD, 0xA1C926, 0x3EB631, 0xB8FACA, 0xB4633C, 0x322FC7,
0xC99F60, 0x4FD39B, 0x434A6D, 0xC50696, 0x5A7981, 0xDC357A, 0xD0AC8C, 0x56E077, 0x681E59, 0xEE52A2,
0xE2CB54, 0x6487AF, 0xFBF8B8, 0x7DB443, 0x712DB5, 0xF7614E, 0x19A3D2, 0x9FEF29, 0x9376DF, 0x153A24,
0x8A4533, 0x0C09C8, 0x00903E, 0x86DCC5, 0xB822EB, 0x3E6E10, 0x32F7E6, 0xB4BB1D, 0x2BC40A, 0xAD88F1,
0xA11107, 0x275DFC, 0xDCED5B, 0x5AA1A0, 0x563856, 0xD074AD, 0x4F0BBA, 0xC94741, 0xC5DEB7, 0x43924C,
0x7D6C62, 0xFB2099, 0xF7B96F, 0x71F594, 0xEE8A83, 0x68C678, 0x645F8E, 0xE21375, 0x15723B, 0x933EC0,
0x9FA736, 0x19EBCD, 0x8694DA, 0x00D821, 0x0C41D7, 0x8A0D2C, 0xB4F302, 0x32BFF9, 0x3E260F, 0xB86AF4,
0x2715E3, 0xA15918, 0xADC0EE, 0x2B8C15, 0xD03CB2, 0x567049, 0x5AE9BF, 0xDCA544, 0x43DA53, 0xC596A8,
0xC90F5E, 0x4F43A5, 0x71BD8B, 0xF7F170, 0xFB6886, 0x7D247D, 0xE25B6A, 0x641791, 0x688E67, 0xEEC29C,
0x3347A4, 0xB50B5F, 0xB992A9, 0x3FDE52, 0xA0A145, 0x26EDBE, 0x2A7448, 0xAC38B3, 0x92C69D, 0x148A66,
0x181390, 0x9E5F6B, 0x01207C, 0x876C87, 0x8BF571, 0x0DB98A, 0xF6092D, 0x7045D6, 0x7CDC20, 0xFA90DB,
0x65EFCC, 0xE3A337, 0xEF3AC1, 0x69763A, 0x578814, 0xD1C4EF, 0xDD5D19, 0x5B11E2, 0xC46EF5, 0x42220E,
0x4EBBF8, 0xC8F703, 0x3F964D, 0xB9DAB6, 0xB54340, 0x330FBB, 0xAC70AC, 0x2A3C57, 0x26A5A1, 0xA0E95A,
0x9E1774, 0x185B8F, 0x14C279, 0x928E82, 0x0DF195, 0x8BBD6E, 0x872498, 0x016863, 0xFAD8C4, 0x7C943F,
0x700DC9, 0xF64132, 0x693E25, 0xEF72DE, 0xE3EB28, 0x65A7D3, 0x5B59FD, 0xDD1506, 0xD18CF0, 0x57C00B,
0xC8BF1C, 0x4EF3E7, 0x426A11, 0xC426EA, 0x2AE476, 0xACA88D, 0xA0317B, 0x267D80, 0xB90297, 0x3F4E6C,
0x33D79A, 0xB59B61, 0x8B654F, 0x0D29B4, 0x01B042, 0x87FCB9, 0x1883AE, 0x9ECF55, 0x9256A3, 0x141A58,
0xEFAAFF, 0x69E604, 0x657FF2, 0xE33309, 0x7C4C1E, 0xFA00E5, 0xF69913, 0x70D5E8, 0x4E2BC6, 0xC8673D,
0xC4FECB, 0x42B230, 0xDDCD27, 0x5B81DC, 0x57182A, 0xD154D1, 0x26359F, 0xA07964, 0xACE092, 0x2AAC69,
0xB5D37E, 0x339F85, 0x3F0673, 0xB94A88, 0x87B4A6, 0x01F85D, 0x0D61AB, 0x8B2D50, 0x145247, 0x921EBC,
0x9E874A, 0x18CBB1, 0xE37B16, 0x6537ED, 0x69AE1B, 0xEFE2E0, 0x709DF7, 0xF6D10C, 0xFA48FA, 0x7C0401,
0x42FA2F, 0xC4B6D4, 0xC82F22, 0x4E63D9, 0xD11CCE, 0x575035, 0x5BC9C3, 0xDD8538
};

int main(void)
{
int crc=0,i;
int buf[3];
int len = sizeof(rtcm);

for(i=0;i<len-3;i++)
{
    crc=((crc<<8)&0xFFFFFF)^table[(crc>>16)^(rtcm[i]&0xff)];
}
buf[0]=((crc & 0xff0000) >> 16);
buf[1]=((crc & 0xff00) >> 8);
buf[2]=(crc&0xff);
printf("校验计算结果 %x,%x,%x\r\n",buf[0],buf[1],buf[2]);
return 0;
}

运行结果:
在这里插入图片描述
格林恩德专注GPS北斗高精度定位、北斗短报文通信与无线传输应用产品的开发与市场拓展。

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值