ビットフィールドを使用せずにバイト内のニブルを読み書きする簡単な方法はありますか?私は常に両方のニブルを読む必要がありますが、それぞれのニブルを個別に書く必要があります。
ありがとう!
ビットフィールドを使用せずにバイト内のニブルを読み書きする簡単な方法はありますか?私は常に両方のニブルを読む必要がありますが、それぞれのニブルを個別に書く必要があります。
ありがとう!
マスクを使用する:
char byte;
byte = (byte & 0xF0) | (nibble1 & 0xF); // write low quartet
byte = (byte & 0x0F) | ((nibble2 & 0xF) << 4); // write high quartet
これをマクロ内に配置することをお勧めします。
使用できる最小単位は1バイトです。ビットを管理する場合は、ビット演算子を使用する必要があります。
便宜上、自分で疑似ユニオンを作成できます。
union ByteNibbles
{
ByteNibbles(BYTE hiNibble, BYTE loNibble)
{
data = loNibble;
data |= hiNibble << 4;
}
BYTE data;
};
次のように使用します。
ByteNibbles byteNibbles(0xA, 0xB);
BYTE data = byteNibbles.data;