Можно создать дубликат:
BitSet to and from integer/longПреобразование BitSet в целое
Как преобразовать класс класс BITSET в целое (я всегда BITSET (8) Есть ли простой способ или я нужно выполнить цикл через битовый набор?
Можно создать дубликат:
BitSet to and from integer/longПреобразование BitSet в целое
Как преобразовать класс класс BITSET в целое (я всегда BITSET (8) Есть ли простой способ или я нужно выполнить цикл через битовый набор?
Поскольку вы не можете получить доступ к значениям непосредственно с помощью битов api, вам необходимо повторить так:
public static void main(String[] args) {
BitSet bs = new BitSet();
bs.set(5);
System.out.println(bs);
int res = 0, pow = 1;
for (int i = 0 ; i < 32 ; i++ , pow <<= 1) {
if (bs.get(i)) {
res |= pow;
}
}
System.out.println("" + res);
}
Это должно сделать это ...
public static int bitSetToInt(BitSet bitSet)
{
int bitInteger = 0;
for(int i = 0 ; i < 32; i++)
if(bitSet.get(i))
bitInteger |= (1 << i);
return bitInteger;
}
Я полагаю, можно использовать nextSetBit
, чтобы сделать его более эффективным, но это перебор, будет Prolly добавить больше накладных расходов, чем помочь ...
Попытка:
int result = 0 ;
for(int i = 0 ; i < bitSet.length() ; i++){
if(bitSet.get(i)){
result |= (1 << i);
}
}
result &= Integer.MAX_VALUE;
return result;
Какое преобразование вы ожидаете от сколь угодно большого «битСета»? –
Не совсем дубликат. Другой вопрос показывает, как создать бит из длинного, а не другого. – dogbane
Другой вопрос задает вопрос «от и до», поэтому этот вопрос охватывает этот вопрос, но, к сожалению, верхний ответ охватывает только преобразование из int в BitSet. – Joel