Duplicar posible:?
BitSet to and from integer/longConvierte BitSet a int
Cómo convertir clase BitSet clase a int (siempre tengo Bitset (8) ¿Hay alguna forma fácil o yo necesita recorrer el conjunto de bits?
Duplicar posible:?
BitSet to and from integer/longConvierte BitSet a int
Cómo convertir clase BitSet clase a int (siempre tengo Bitset (8) ¿Hay alguna forma fácil o yo necesita recorrer el conjunto de bits?
Dado que no puede acceder a los valores directamente mediante la API de conjuntos de bits, debe iterar así:
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);
}
Esto debe hacerlo ...
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;
}
supongo que se podría utilizar nextSetBit
para que sea más eficiente, pero eso es una exageración, se prolly añadir más sobrecarga que ayuda ...
Pruebe:
int result = 0 ;
for(int i = 0 ; i < bitSet.length() ; i++){
if(bitSet.get(i)){
result |= (1 << i);
}
}
result &= Integer.MAX_VALUE;
return result;
¿Qué tipo de conversión espera para un 'BitSet' arbitrariamente grande? –
No es realmente un duplicado. La otra pregunta muestra cómo crear un conjunto de bits de una forma larga, no de la otra. – dogbane
La otra pregunta requiere 'hacia y desde', por lo que cubre esta pregunta, pero lamentablemente la respuesta superior solo cubre la conversión de un int a un BitSet. – Joel