将单词的两个部分与另一个单词的一部分组合并使用比例因子

时间:2017-04-05 15:00:29

标签: c++ gps bit-manipulation bitset

我正在尝试从GPS接收器中提取数据。他们传递信息的方式如下图所示。

Bit information

我正在努力获得roota。我在单独的位集中有单词8和单词9。如何将相关位组合成一个位集?

我还需要使用此比例因子信息来获得双精度数。比例因子信息如下所示。

scale factor information

我试过了

std::bitset<32> word8_binary; // is filled with word 8 data.
std::bitset<32> word9_binary; // is filled with word 9 data.

std::bitset<32> roota_binary;

for (int i=13; i>5; i--)
{             
    roota_binary = word8_binary[i] << 32 | word9_binary[i];
} 

但这并没有给我我想要的结果。我也不知道如何起诉比例因子。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这可能不是“c ++”,但我会对相应的整数进行一些操作:

ulong roota_binary = (((word8_binary.to_ulong() >> 6) & 0xFF) <<24) +
                     ((word9_binary.to_ulong() >>6) & 0xFFFFFF); 

>>6摆脱了奇偶校验位,掩码隔离了你需要的位,<<24将高位置放在最前面。