我正在为我的程序使用BitSet类。 我需要一个内联声明,如:
BitSet bits1 = new BitSet(); //standard declaration
bits1.set(0,2);
bits1.set(4,6);
System.out.println(bits1); //110011
BitSet bits2 = BitSet.valueOf(new long[] {1,1,0,0,1,1}); //inline
System.out.println(bits2);
使用此代码,我尝试在 bits2 中复制 bits1 中的相同BitSet。 问题如下:打印和值不同。 我设置的BitSet是110011.第一个打印出{0,1,4,5}并且它是正确的,因为这是" nice"用索引打印BitSet的方法,第二个打印出{0,64,256,320}。 你可以看到第二个是错的。我很确定内联初始化是错误的,但我无法弄清楚如何解决这个问题。
答案 0 :(得分:5)
数组中的每个long表示64位。您只需要设置4位的长整数:
BitSet bits2 = BitSet.valueOf(new long[] {0b110011});
System.out.println(bits2);
// {0, 1, 4, 5}