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

Cry*_*ime 3 c c++ byte bit-fields

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

谢谢!

Ale*_* C. 5

使用面具:

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

您可能希望将其放在宏中.

  • 如果要更新现有值,则需要在新值之前清除"byte"中的半字节.`byte =(byte&~0xF)| (nibble1&0xF)`,同样适用于顶级半字节. (2认同)
  • 不会命名可变字节 (2认同)
  • 上面的代码中有几个错误 - 您需要在字节掩码前面添加一个“~”。 (2认同)