首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带枚举的位移位

带枚举的位移位
EN

Stack Overflow用户
提问于 2020-02-14 09:55:09
回答 1查看 47关注 0票数 0

我有4个属性,并希望在一个名为controlByte的字节中转换它们。例如,TypeEnum有4个条目(0 =未知,1=红色,2=蓝色,3=绿色)

  • 位0-1: TypeEnum
  • 位2-3: SpeedEnum
  • 位4: IsActive
  • 位5:可选

代码:

代码语言:javascript
复制
 Byte controlByte = 0;
 controlByte  = (byte) (controlByte  | ((int)TypeEnum << 0));
 controlByte  = (byte) (controlByte  | ((int)SpeedEnum  << 2));
 controlByte  = (byte) (controlByte  | (IsActive ? 1 : 0 << 4));

预期结果:

代码语言:javascript
复制
     | Optional | IsActive | Speed | Type |
 Bit 7          5          4       2      0

我不确定枚举的逻辑是否正确。但是IsActive的第三行不起作用。设置了索引0的位,而不是索引4的位。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-14 09:59:36

代码语言:javascript
复制
controlByte  = (byte) (controlByte  | ((IsActive ? 1 : 0) << 4));

你的条件是这样的: IsActive?然后是1,不活动(0和4左移)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60223928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档