gpt4 book ai didi

java - 将两个字节的位掩码转换为 EnumSet

转载 作者:搜寻专家 更新时间:2023-11-01 02:34:37 26 4
gpt4 key购买 nike

我正在读取一个二进制文件,该文件的值存储在位掩码中,包括 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com