如果我想对整数进行位操作,如何将其加载到java.util.BitSet?中?如何将其转换回int或long?我不太担心BitSet它的大小,它总是32或64位长。我只是想使用set(),clear(),nextSetBit(),和nextClearBit()方法,而不是位运算符,但我无法找到一个简单的方法来初始化位集以数字类型。
java.util.BitSet
BitSet
set()
clear()
nextSetBit()
nextClearBit()
以下代码从一个长值创建一个位集,反之亦然:
public class Bits { public static BitSet convert(long value) { BitSet bits = new BitSet(); int index = 0; while (value != 0L) { if (value % 2L != 0) { bits.set(index); } ++index; value = value >>> 1; } return bits; } public static long convert(BitSet bits) { long value = 0L; for (int i = 0; i < bits.length(); ++i) { value += bits.get(i) ? (1L << i) : 0L; } return value; } }
编辑:现在两个方向,@leftbrain:原因,你是对的