BitSetを使用して整数をバイナリ文字列に変換したいだけです。BitSetのtoString()とvalueOf()の理解が難しい
私のコードは以下の通りです。私は理解していなかった何
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()));
}
}
Q1)。これは正しいアプローチ(Method_1またはMethod_2)です。 Method_1は正しいと思われますが、bs.toLongArray()
は異なる結果を示します。
Q2)このapiを説明してください。public static BitSet valueOf(long[] longs)
は、単一のlongではなくlong値の配列を受け入れますか?そして、この配列では本当に何をしていますか?
Java docは以下を示します。しかし、私は本当に意味を得ていませんでした。
より正確には、BitSet.valueOf(long型)に.get(N)==((long値[N/64] & (1L < <(N%64)))!= 0)
用すべてn < 64 * longs.length。
助けてください。
ありがとうございます!私の2番目の質問にもお答えください。 –
うわー!!素晴らしい情報!!!ありがとうございました!!! –