由于存在库,我计划使用BitSet来操作byte []中的位。
然而,似乎在从byte []创建BitSet后,BitSet的最小大小为64,否则它最终为零。 是否要求必须有8个字节? 此外,等于零的byte []将始终显示为零大小。我以为它仍会输出字节数组的大小?
即。
BitSet bs1 = BitSet.valueOf(new byte[] {0, 0, 0, 0, 0, 0, 1}); // bs1.size() == 64
BitSet bs2 = BitSet.valueOf(new byte[] {0, 0, 0, 0, 0, 0, 0, 1}); // bs2.size() == 64
BitSet bs3 = BitSet.valueOf(new byte[] {0, 0, 0, 0, 0, 0, 0, 0, 1}); // bs3.size() == 128
BitSet bs4 = BitSet.valueOf(new byte[] {0, 0, 0, 0, 0, 0, 0, 0, 0}); // bs4.size() == 0
System.out.print(bs1.size() + " " + bs2.size() + " " + bs3.size() + " " + bs4.size());
我可能最终会编写自己的函数,但我很好奇为什么会这样。
谢谢!