Java 位集toString()和valueOf()很难理解
我只想使用位集将整数转换为二进制字符串 我的代码如下Java 位集toString()和valueOf()很难理解,java,Java,我只想使用位集将整数转换为二进制字符串 我的代码如下 public class BitSetTest { public static void main(String[] args) { //Method_1 int value = 10; //0b1010 String bits = Integer.toBinaryString(value); BitSet bs = new BitSet(bits.length());
public class BitSetTest {
public static void main(String[] args) {
//Method_1
int value = 10; //0b1010
String bits = Integer.toBinaryString(value);
BitSet bs = new BitSet(bits.length());
for (int i = 0; i < bits.length(); i++) {
if (bits.charAt(i) == '1') {
bs.set(i);
} else {
bs.clear(i);
}
}
System.out.println(bs); //{0, 2} so 0th index and 2nd index are set.
System.out.println(Arrays.toString(bs.toLongArray())); //prints [5]
System.out.println(Arrays.toString(bs.toByteArray()));
//Method_2
value = 42;
System.out.println(Integer.toBinaryString(value)); //101010
BitSet bitSet = BitSet.valueOf(new long[] { value });
System.out.println(bitSet);
System.out.println(Arrays.toString(bitSet.toLongArray())); // prints [42]
System.out.println(Arrays.toString(bitSet.toByteArray()));
}
}
公共类BitSetTest{
公共静态void main(字符串[]args){
//方法1
int值=10;//0b1010
字符串位=整数。toBinaryString(值);
比特集bs=新比特集(bits.length());
对于(int i=0;i
Q1)我不明白的事情;哪种方法是正确的(方法1或方法2)。
方法1似乎是正确的,但是bs.toLongArray()
给出了不同的结果
Q2)请您解释一下这个api公共静态位集值(long[]long)
接受长值数组而不是单个长值。。?那么这个阵列到底在做什么呢
Java文档如下所示;但我真的不明白这是什么意思
更准确地说,BitSet.valueOf(longs).get(n)=((longs[n/64]&
(1L位从右侧开始编号
42=0b101010
543210位从右侧开始编号
42=0b101010
543210