簡體   English   中英

Java BitSet size()行為

[英]Java BitSet size() behavior

由於存在一個庫,我打算使用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()); 

我可能最終會寫出自己的函數,但我對為什么會這樣感到好奇。

謝謝!

只需閱讀javadoc:

size()返回此BitSet實際使用的表示位數的空間位數。

事情是:BitSet預分配空間; 這就是size()告訴您的! 不會告訴你有多少位正是你“放”進了!

換句話說:BitSet以64個“空”位開頭; 一旦您“輸入”一個值,該值需要超過64個值; 您轉到128位的“分配”。 還要注意,size()取決於您的JDK的BitSet實現。

您可能要研究length()或resp。 valueOf() ; 可能會幫助您解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM