2017-04-05 11 views
0

GPS受信機からデータを抽出しようとしています。情報を送信する方法を次の図に示します。単語の2つの部分を別の単語の一部と組み合わせてスケールファクタを使用する

Bit information

私はrootaを取得しようとしています。私は別々のビットセットで単語8と単語9を持っています。どのように関連するビットを1つのビットセットにまとめるのですか?

倍精度数値を取得するには、この倍率情報も使用する必要があります。スケールファクタ情報を以下に示します。

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ビットのメッセージフレームは、第2のフレームに対してバイト整列されない。 – sawdust

答えて

0

これは、「C++」は十分ではないかもしれませんが、私は、対応する整数にビット操作を行いたい:>>6はパリティビットを取り除く

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

、マスクが必要なビットを分離し、 <<24は高いものを上に置きます。

関連する問題