电文存储的事项
GPS L1导航电文存储
1 电文存储数据方向: bit高位存储的是 电文低位(先发送的数据)
2 在bit位转换至整型int32时,如果使用 std::bitset 会发生 bit高低位倒序存储,建议使用按位与操作,保持原有顺序。word0 word1 word2 ->word10
同时在word 内部 bit29_pre bit30_pre bit0 bit1 bit2 ...bit30
3 word内部bit位的操作 循环仍然需要倒叙 完成 bit0 bit1 bit2 高位->低位的 数据存储
value = 0;
while ( i < size_length )
{
value << 1;
value = value + bit_strem(bit_phase + i);
i ++ ;
}
使用std::bitset 发生一次倒序后,bit拼帧,不需要倒序。按照倒序后的顺序拼帧。
但是对word 的拼帧还需要一次倒序,完成所有300bit的倒序,然后使用300-原有index 转换至倒序后每段信息的帧首;
2 电文解析 有两种类型 unsigned 类型 和 signed类型
unsigned类型 无符号类型相对简单一些
不需要判断第一位 符号位
主要描述 signed类型 原因 :发送的电文信息 受制于信息长度,符号位几乎不能时 类型的首位(例如 int64 只有符号位在63位 ,才不需要转换)
判断第一符号位
int64 value = 0LL;
if bit_strem(bit_phase + 0) == 1
value ^= 0xFFFFFFFFFFFFFFFF;
else
value &= 0x0LL;
end
while (i < bit_size)
{
value <<= 1;
value &= 0xFFFFFFFFFFFFFFFELL;
if(bit_stream[i] == 1)
{
value += 1LL
}
i+=;
}
浙公网安备 33010602011771号