3

ビットフィールドを使用せずにバイト内のニブルを読み書きする簡単な方法はありますか?私は常に両方のニブルを読む必要がありますが、それぞれのニブルを個別に書く必要があります。

ありがとう!

4

3 に答える 3

5

マスクを使用する:

char byte;
byte = (byte & 0xF0) | (nibble1 & 0xF); // write low quartet
byte = (byte & 0x0F) | ((nibble2 & 0xF) << 4); // write high quartet

これをマクロ内に配置することをお勧めします。

于 2010-06-24T13:27:21.860 に答える
1

使用できる最小単位は1バイトです。ビットを管理する場合は、ビット演算子を使用する必要があります。

于 2010-06-24T13:26:24.950 に答える
-2

便宜上、自分で疑似ユニオンを作成できます。

union ByteNibbles
{
    ByteNibbles(BYTE hiNibble, BYTE loNibble)
    {
        data = loNibble;
        data |= hiNibble << 4;
    }

    BYTE data;
};

次のように使用します。

ByteNibbles byteNibbles(0xA, 0xB);

BYTE data = byteNibbles.data;
于 2010-06-24T13:33:44.203 に答える