0

次の問題があります。

私は and を持っており、uint8_t h_MSBそれらuint16_t h_LSBiwant組み合わせてuint32_t

だからここに私のコードがあります:

void  parseHeader(MyPackage Header,uint32_t* timeStamp ){
(*timeStamp) = (Header->h_MSB <<16)| Header->h_LSB;
} 

しかし、うまくいかないようです。

h_MSB = 10私はそれを試してみましたh_LSB= 10

タイムスタンプに 10 を取得します。

7 bit問題は、私がすべての情報を h_MSB失われた場合にシフトすると思われますが、タイムスタンプがuint32_t.

4

1 に答える 1

0

問題はそれh_MSBuint8_tあり、シフト演算はuint8_t型内で (またはおそらく 内uint16_tで実行されますが、それは問題ではありません)、 を取得することです0uint32_tシフトする前にキャストします:

(*timeStamp) = (((uint32_t)Header->h_MSB) << 16) | Header->h_LSB;
于 2014-06-05T17:22:44.553 に答える