Powiel możliwe:?
BitSet to and from integer/longKonwersja BitSet int
Jak przekonwertować class BitSet int (zawsze mam Bitset (8) Czy istnieje prosty sposób lub I trzeba pętli przez zestaw bitów?
Powiel możliwe:?
BitSet to and from integer/longKonwersja BitSet int
Jak przekonwertować class BitSet int (zawsze mam Bitset (8) Czy istnieje prosty sposób lub I trzeba pętli przez zestaw bitów?
Ponieważ nie można uzyskać dostępu do wartości bezpośrednio za pomocą api bitsetów, musisz wykonać iterację w następujący sposób:
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);
}
To powinno wystarczyć ...
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;
}
Przypuszczam można użyć nextSetBit
aby uczynić go bardziej wydajne, ale to przesada, to naprawde dodać więcej narzut niż pomoc ...
Wypróbuj:
int result = 0 ;
for(int i = 0 ; i < bitSet.length() ; i++){
if(bitSet.get(i)){
result |= (1 << i);
}
}
result &= Integer.MAX_VALUE;
return result;
Jakiego rodzaju konwersji oczekujesz od arbitralnie dużego 'BitSet'? –
Naprawdę nie duplikat. Drugie pytanie pokazuje, jak utworzyć zestaw bitów z długiej, a nie odwrotnie. – dogbane
Drugie pytanie wymaga "do i od", więc obejmuje to pytanie, ale niestety najwyższa odpowiedź obejmuje tylko konwersję z int do zestawu bitowego. – Joel