BitSet valueOf做什么?

时间:2017-07-18 18:57:37

标签: java arrays bits bitset

我很难理解BitSet.valueOf(bytearray)

我有以下代码:

UIActivityViewController

上面的代码为我提供了byte[] a = new byte[]{(byte) 0x2D, (byte) 0x04}; //binary => 0010 1101 0000 0100 BitSet bs = BitSet.valueOf(a); System.out.println(bs); 的输出。为什么呢?

我认为它应该返回真实的索引,或者向后返回1,然后应该是{0, 2, 3, 5, 10}

2 个答案:

答案 0 :(得分:3)

正如您所料,BitSet正在做正确的事。你似乎误解了哪个位是零,哪个位是7。对于第一个字节,您的二进制表示是正确的,但请记住第一个位在右侧(从最低到最高,作为我们如何编写数字的奇怪工件):

Bit Value:  0 0 1 0 1 1 0 1
Index:      7 6 5 4 3 2 1 0

读取索引会给出0, 2, 3, 5, 10

答案 1 :(得分:2)

这是从LSB到MSB的第一个字节,后跟从LSB到MSB的第二个字节:

1011 0100 0010 0000
| ||  |     |
0 23  5     10