2017-04-05 59 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將高位放在頂部。

相關問題