2017-04-05 110 views
0

我试图从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]; 
} 

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

您的帮助将不胜感激。

+0

如何收到此数据?每个*“单词”*只有30位!对于第二帧,300位的消息帧不会被字节对齐。 – sawdust

回答

0

这可能不是“C++”够了,但我会做相应的整数位操作:

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

>>6摆脱奇偶校验位,口罩隔离您需要的位, <<24将高位放在顶部。

相关问题