我有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的位。
发布于 2020-02-14 09:59:36
controlByte = (byte) (controlByte | ((IsActive ? 1 : 0) << 4));你的条件是这样的: IsActive?然后是1,不活动(0和4左移)。
https://stackoverflow.com/questions/60223928
复制相似问题