【发布时间】:2022-01-10 19:57:27
【问题描述】:
我有一个短数组 {0,2,3,1,…},我想将其转换为 BitSet。
位集中的预期位:00 10 11 01 …
bitset 中的每两个位都应该代表一个短路。 (2 位精度) 这对于短值 (0,1,2,3) 应该可以正常工作。
我知道我可以使用 ByteBuffer 和 BitSet 来访问数字的位,但这些位被格式化为 2 个字节(16 位)。我假设我需要对值进行位移才能访问正确的位,但我不知道如何。
int nBit = 0;
BitSet result = new BitSet();
for (int i = 0; i < numbers.length; i++) {
ByteBuffer buffer = ByteBuffer.allocate(2);
buffer.putShort(number);
BitSet bits = BitSet.valueOf(buffer.array());
result.set(nBit++, bits.get(?));
result.set(nBit++, bits.get(?));
}
也许有更简单的方法?
【问题讨论】:
-
为什么不使用字节而不是位集?你只需要 8 位...
-
数组不限于4个数字。我已经更新了问题以使这一点更清楚。
-
你见过
BitSet.valueOf(byte[] bytes)或BitSet.valueOf(long[] longs)吗?
标签: java bytebuffer bitset