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

use*_*029 0 c c++ binary

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

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

0000 0101(3 LSB为引脚)

我怎样才能做到这一点?

dbr*_*nk0 7

就像是

value = (P1_1<<3)|(P1_2<<2)|(P1_3<<1)|(P1_4);
Run Code Online (Sandbox Code Playgroud)

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

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