我正計劃使用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