将BitSet转换为int
可能重复:
BitSet与整数/长整数
如何将类BitSet类转换为int(我总是有Bitset(8)?有没有简单的方法或者我需要循环bitset?
这应该做到……
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
来提高效率,但这样做太过分了,会比帮助增加更多的开销...
尝试:
int result = 0 ; for(int i = 0 ; i < bitSet.length() ; i++){ if(bitSet.get(i)){ result |= (1 << i); } } result &= Integer.MAX_VALUE; return result;
由于您无法通过bitsets 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 ); }