Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
16 ビットの符号と大きさの整数を 8 ビットの符号と大きさの整数にコピーする C コードを実装しています。それは可能ですか?誰かがこれを行う方法を説明してもらえますか?
コードスニペット:
int16_t a = 0x1234; int8_t b, c;
最初の 2 桁を変数 b にコピーし、次の 2 桁を変数 c にコピーする方法は?
言語のビット単位の演算子を使用できます。数字の 8 ビットと 0 ビットをそれぞれ右にシフトして、1 桁目と 2 桁目を取得する必要があります (正確に 1 バイトが抽出されるように、それらを 255 でマスクする必要もあります)。
int16_t i = 0x1234; uint16_t n = i; // because shifting the sign bit invokes UB int8_t hi = ((i >> 8) & 0xff); int8_t lo = ((i >> 0) & 0xff);