gpt4 book ai didi

Java BitSet size() 行为

转载 作者:行者123 更新时间:2023-11-29 08:40:05 25 4
gpt4 key购买 nike

我正计划使用 BitSet 来操作 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:

size() :返回此 BitSet 实际使用的空间位数以表示位值。

事情是:BitSet 预分配空间;这就是 size() 告诉你的!它不会告诉您您“放入”了多少位!

换句话说:BitSet 以 64 个“空”位开始;一旦你“输入”一个需要超过 64 个的值;你去 128 位的“分配”。另请注意,size() 取决于您的 JDK 对 BitSet 的实现。

您可能想查看 length()分别valueOf() ;可能这将帮助您解决问题。

关于Java BitSet size() 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40939041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com