将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 ); }