我有4个属性,并希望将它们移动到一个称为controlByte的字节中。例如,TypeEnum有4个条目(0 =未知,1 =红色,2 =蓝色,3 =绿色)
码:
Byte controlByte = 0;
controlByte = (byte) (controlByte | ((int)TypeEnum << 0));
controlByte = (byte) (controlByte | ((int)SpeedEnum << 2));
controlByte = (byte) (controlByte | (IsActive ? 1 : 0 << 4));
预期结果:
| Optional | IsActive | Speed | Type |
Bit 7 5 4 2 0
我不确定枚举的逻辑是否正确。但是IsActive的第三行不起作用。设置索引为0的位而不是索引为4的位
controlByte = (byte) (controlByte | ((IsActive ? 1 : 0) << 4));
您的条件读取如下:IsActive?然后1,不激活,然后(0左移4)又名0