在C / C ++中读/写半字节(没有位字段)

时间:2010-06-24 13:23:58

标签: c++ c byte bit-fields

是否有一种简单的方法可以在不使用位字段的情况下读取/写入字节中的半字节? 我总是需要读两个半字节,但需要单独写每个半字节。

谢谢!

3 个答案:

答案 0 :(得分:5)

使用面具:

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

您可能希望将其置于宏中。

答案 1 :(得分:1)

您可以使用的最小单位是单个字节。如果您想管理这些位,您应该使用bitwise operators

答案 2 :(得分:-2)

为方便起见,您可以创建一个伪联盟:

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

    BYTE data;
};

像这样使用:

ByteNibbles byteNibbles(0xA, 0xB);

BYTE data = byteNibbles.data;