首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BitSet valueOf做什么?

BitSet valueOf做什么?
EN

Stack Overflow用户
提问于 2017-07-19 02:57:37
回答 2查看 1.3K关注 0票数 5

我在理解BitSet.valueOf(bytearray)时遇到了极大的困难

我有以下代码:

代码语言:javascript
复制
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}

EN

回答 2

Stack Overflow用户

发布于 2017-07-19 03:06:34

正如您所期望的那样,BitSet正在做正确的事情。你似乎误解了哪一位是0,哪一位是7。对于第一个字节,您的二进制表示是正确的,但请记住,第一位在右边(从低到高,这是我们如何写数字的一个奇怪的人工制品):

代码语言:javascript
复制
Bit Value:  0 0 1 0 1 1 0 1
Index:      7 6 5 4 3 2 1 0

从索引中读出结果是0, 2, 3, 5, 10

票数 6
EN

Stack Overflow用户

发布于 2017-07-19 03:06:03

它是从LSB到MSB的第一个字节,然后是从LSB到MSB的第二个字节:

代码语言:javascript
复制
1011 0100 0010 0000
| ||  |     |
0 23  5     10
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45174976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档