Java BitSet的位顺序

时间:2016-07-20 06:31:53

标签: java byte endianness bitset

我有以下代码:

byte[] byteArr = new byte[1];
byte b = (byte) Integer.parseInt("127");
byteArr[0] = b;
BitSet bs = BitSet.valueOf(byteArr);

在最后一行之后设置断点后,我得到一个意外的调试器输出:

enter image description here

在二进制方面,似乎'bs'的值为'11111110',而我希望它的值为'01111111'(127)。截断似乎无法解释,因为只有最后8位是相关的(并且未设置127的MSB)。

这是一个问题,因为我想将它用作其他位串的位掩码。是什么导致了这种行为?是否有解决方法来保留预期的位排序?

1 个答案:

答案 0 :(得分:0)

BitSet 分配单词(表示为长数组),它们是根据所需的位数创建的。

由于您只想表示一个字节,因此它可以表示为一个字(64位/长)。在64位中,它是小端表示,位从最低有效位到最高有效位。

你可以使用get(int bitIndex)检查自己,它对单词执行“和”操作以返回在该位置设置的位

相关问题