我正计划使用BitSet来操纵字节[]中的位,因为存在一个库。Java BitSet size()行为
但是,从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());
我可能最终会写我自己的功能,但我很好奇为什么发生这种情况。
谢谢!
以及阅读Javadoc,源代码是随时可用的:http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/BitSet .java - 注意这个实现将这些位存储为'long'数组。但是 - 在依赖实现细节之前仔细考虑。文档中描述的行为是保证保持真实的。 – slim