电文存储的事项
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+=; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |