0

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

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

0000 0101 ( 3 LSB 是引脚)

我怎样才能做到这一点?

4

2 回答 2

7

就像是

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

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

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

于 2013-09-18T15:26:08.250 回答
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());
于 2013-09-18T15:29:44.097 回答