我正在读取一个二进制文件,该文件的值存储在位掩码中,均为 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(使用前将#替换为@)