有没有一种简单的方法可以在不使用位域的情况下读取/写入字节中的半字节?我总是需要读取两个半字节,但需要单独编写每个半字节。
谢谢!
使用面具:
char byte;
byte = (byte & 0xF0) | (nibble1 & 0xF); // write low quartet
byte = (byte & 0x0F) | ((nibble2 & 0xF) << 4); // write high quartet
你可能想把它放在宏里面。
您可以使用的最小单位是单个字节。如果您想管理位,您应该使用位运算符。
为方便起见,您可以为自己创建一个伪联合:
union ByteNibbles
{
ByteNibbles(BYTE hiNibble, BYTE loNibble)
{
data = loNibble;
data |= hiNibble << 4;
}
BYTE data;
};
像这样使用它:
ByteNibbles byteNibbles(0xA, 0xB);
BYTE data = byteNibbles.data;