我在理解BitSet.valueOf(bytearray)时遇到了极大的困难
我有以下代码:
byte[] a = new byte[]{(byte) 0x2D, (byte) 0x04};
//binary => 0010 1101 0000 0100
BitSet bs = BitSet.valueOf(a);
System.out.println(bs);上面的代码给出了{0, 2, 3, 5, 10}的输出。为什么?
我认为它应该返回的索引是真的,或者保持1,然后应该是{2, 8, 10, 11, 13}。
发布于 2017-07-19 03:06:34
正如您所期望的那样,BitSet正在做正确的事情。你似乎误解了哪一位是0,哪一位是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
发布于 2017-07-19 03:06:03
它是从LSB到MSB的第一个字节,然后是从LSB到MSB的第二个字节:
1011 0100 0010 0000
| || | |
0 23 5 10https://stackoverflow.com/questions/45174976
复制相似问题