Если бы у меня есть целое число, на котором я хотел бы выполнить побитовую обработку, как я могу загрузить ее в a java.util.BitSet
? Как я могу преобразовать его назад в интервал или долго? Я не так обеспокоен размером BitSet
- это всегда будет 32 или 64 бита длиной. Я был бы точно так же, как для использования 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;
}
}
EDITED: теперь в обоих направлениях, @leftbrain: конечно, вы правы
Разве метод public void set(int bit)
не то, что вы ищете?