BitSet を複数の BitSet に変換し、次にそれらを複数のバイト配列に変換することを目的とした小さな Java プロジェクトに取り組んでいます。
たとえば、BitSet を 2 つの部分に分割し、各部分を int に変換したいと考えています。
byte[] bytesToBeConverted = {(byte)0x05, (byte)0x00};
BitSet bitSetToBeConverted = BitSet.valueOf(bytesToBeConverted);
BitSet BitSetPart1 =new BitSet(8);
BitSetPart1=bitSetToBeConverted.get(0,8);
int intPart1 = (int)(BitSetPart1.toByteArray()[0]); //intPart1 ==5
BitSet BitSetPart2 =new BitSet(8);
BitSetPart2 = bitSetToBeConverted.get(8,16);
int intPart2 = (int)(BitSetPart2.toByteArray()[0]); //intPart2 == 0 is wanted
最初の部分 (bitSetPart1 を intPart1 に変換する) では問題は発生しませんが、BitSetpart2 を false で初期化する必要がある 2 番目の部分では、メソッド toByteArray() :java.lang の結果にアクセスするときに例外が発生します。その場合、.ArrayIndexOutOfBoundsException toByteArray は null を返すようです。
それは、ゼロがそのタイプの操作の禁止値であることを意味しますか? その場合、BitSet クラスを拡張して toByteArray() メソッドをオーバーライドしますか? または、その問題を克服するための追加のメソッドを使用して、BitSet から完全に分離されたクラスを作成しますか?
または、私が言及していないその種の操作を実行する別の方法はありますか?
ご回答ありがとうございます。