Я работаю над небольшим 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, с дополнительным методом для решения этой проблемы?
или есть другой способ выполнить такую операцию, о которой я не упомянул?
Большое спасибо за ваши ответы!