对于指定的通信标准 RTCM SC104 3.1,我需要将数据跨字节拆分为一对 12 位数据段。因此,对于给定的消息,我需要将消息类型号放在第一个字节和第二个字节的一半上。然后我需要在第二个字节的一半开始一个 ID 整数并继续到第三个字节。这种模式一直持续到消息的末尾,它会减少 20 位、5 位和其他大小的其他整数,基本上是剪掉通常会填充整数值的 MSB 端的 0。
我还没有看到明确的定义,但我认为它必须以网络字节顺序输出,因此在复制位之前,我必须反转内存中的整数。我对 cpp 还是很陌生,想知道如何获取构成内存中整数的各个字节?如果我可以访问字节,那么我可以按位使用或将位从 2 个字节拆分为一个用于消息。
这是在添加数据之前构建消息的开始:
//build message 1002 gps 00111110 1010
char buf1002[BUFFERSIZE];
buf1002[0] = 0x3E; //00111110
buf1002[1] = 0xA0; //10100000
//ref station id 12 bits of 16
//ex unsigned short m = 1100;
//m would be byte2 00000100 byte1 01001100
//buf1002[1] would be 10100100
//buf1002[2] would be 01001100
//reverse bit order for network after building?
参考站将来自一个无符号短整数,因此是一个 2 字节整数。那么我该如何从其中读取单个字节呢?我是否从内存位置指针开始?如果是,那又如何?
任何帮助将不胜感激。