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

时间:2013-09-18 15:22:41

标签: c++ c binary

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

我想将它们组合成一个字节值,例如:

0000 0101( 3 LSB是引脚

我该怎么做?

2 个答案:

答案 0 :(得分:7)

这样的东西
value = (P1_1<<3)|(P1_2<<2)|(P1_3<<1)|(P1_4);

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

另请注意,如果P常量之一不是0或1,则会产生意外结果。在这种情况下,可能会使用!! P1_x而不是P1_x。

答案 1 :(得分:3)

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());