我很难理解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}
。
答案 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