私は4つの8ビット値を1つの32ビット値に格納するために32ビット変数を使用しています。8ビットMCUでの32ビット可変シフト
32_bit_buf[0]= cmd[9]<<16 | cmd[10]<<8| cmd[11] <<0;
cmd
は、32ビット変数iが0xFFFFBBCC
を取得してい印刷されるが、データ
cmd [9]=AA
cmd[10]=BB
cmd[11]=CC
とunsigned char型のものです。
アーキテクチャに8ビットAVR XMEGA
、言語C
私が間違っているつもりだところ、誰もが把握することができます。
これらの変数の定義は重要です。 'int'より小さいすべての値は' int'に最初に昇格されます。 'int'が署名され、あなたが署名ビットに押したときの動作は未定義です。その後、値は32ビットバッファに符号拡張されます。*その定義も重要です。 –
https://stackoverflow.com/questions/2280663/in-ac-expression-where-unsigned-int-and-signed-int-are-present-which-type-will –
@AnttiHaapala符号ビットは*即刻*ここの問題ですが、それは次のものになる可能性があります...私の答えにそれを加えました。 –