将两字节位掩码转换为 EnumSet

2024-01-08

我正在读取一个二进制文件,该文件的值存储在位掩码中,均为 1 字节位掩码和 2 字节位掩码。掩码中的每一位都充当一个开关,指示事件发生的位置。

1 字节掩码示例:

00000101

表示事件一和事件 3已经发生了。

的例子Enum

public enum MyEnum 
{
    EventOne,
    EventTwo,
        ....;   
}

我创建了一个Enum MyEnum(根据第 32 条有效的java,第二版 http://java.sun.com/docs/books/effective/toc.html)的事件。如何将二进制位掩码读入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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将两字节位掩码转换为 EnumSet 的相关文章

随机推荐