将 3 个字节/引脚值组合成一个字节

Combing 3 byte/pin values into one byte

本文关键字:字节 一个 引脚 组合      更新时间:2023-10-16

我定义了 4 个引脚值,P1_1、P1_2、P1_3 P1_4,带有位值。(1/0)

我想将它们合并为一个字节值,例如:

0000 0101(3 LSB 是引脚

我该怎么做?

类似

value = (P1_1<<3)|(P1_2<<2)|(P1_3<<1)|(P1_4);

免责声明:这是一个非常丑陋的例子。在实际代码中,您可能希望为 shift 定义某种常量(因此您可以在不使用更多魔术文本值的情况下执行反向操作)。

另请注意,如果 P 常量之一不是 0 或 1,这将产生意外结果。在这种情况下,可以使用类似的东西!!P1_x而不是P1_x。

bitset<4> temp;
temp[0] = P1_1;
temp[1] = P1_2;
temp[2] = P1_3;
temp[3] = P1_4;
unsigned char value = static_cast<unsigned char>(temp.to_ulong());