라이브러리가 존재하기 때문에 BitSet을 사용하여 바이트 []의 비트를 조작 할 계획이었습니다.자바 비트셋 크기() 동작
그러나 바이트 []에서 BitSet을 만든 후 비트 세트의 최소 크기는 64이며, 그렇지 않으면 0이됩니다. 8 바이트가 있어야한다는 요구 사항이 있습니까? 또한 0과 동일한 byte []는 항상 0 크기로 표시됩니다. 바이트 배열의 크기를 여전히 출력한다고 가정했습니다.
즉.
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