我正在开发一个小型 Java 项目,旨在将一个 BitSet 转换为几个 BitSet,然后将它们转换为几个字节数组:
例如,我希望将 BitSet 分成两部分并将每个部分转换为 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 进行初始化,这会导致在访问 toByteArray() 方法的结果时引发异常:java.lang .ArrayIndexOutOfBoundsException toByteArray 在这种情况下似乎返回 null 。
这是否意味着零是该类型操作的禁止值?在这种情况下,您宁愿扩展 BitSet 类并覆盖 toByteArray() 方法吗?或者创建一个与 BitSet 完全分离的类,并使用额外的方法来克服该问题?
还是有另一种方法来执行我没有提到的那种操作?
非常感谢你的回答!