作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在读取一个二进制文件,该文件的值存储在位掩码中,包括 1 字节 位掩码 和 2 字节 位掩码。掩码中的每一位都充当一个开关,指示事件发生的位置。
Example of 1 Byte mask:
00000101
Indicates that Event one and Event 3 has transpired.
枚举示例
public enum MyEnum
{
EventOne,
EventTwo,
....;
}
我创建了一个 Enum MyEnum
(根据 Effective java, Second Edition 中的第 32 项)事件。如何将二进制位掩码读入 EnumSet<MyEnum>
?
最佳答案
List<MyEnum> list = new ArrayList<MyEnum>();
for (MyEnum value : MyEnum.values()) {
if ((mask & (1 << value.ordinal())) != 0) {
list.add(value);
}
}
return EnumSet.copyOf(list);
对于 2 字节的掩码,将 2 个字节合并为一个 int。例如:
int mask = (((int)hbyte) & 0xff) << 8 | (((int)lbyte) & 0xff);
关于java - 将两个字节的位掩码转换为 EnumSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1499833/
我是一名优秀的程序员,十分优秀!