Проверка отдельных битов в массиве байтов в Java?
Итак, скажем, у меня есть массив байтов, и у меня есть функция, которая проверяет, является ли n-й наименее значимый битовый индекс массива байтов 1 или 0. Функция возвращает true, если бит равен 1, и false, если бит равен 0. Наименее значимый бит массива байтов определяется как последний значимый бит в 0-м индексе массива байтов, а наиболее значимый бит массива байтов определяется как наиболее значимый бит в массиве (byte.длина-1) - й индекс байта матрица.
например,
byte[] myArray = new byte[2];
byte[0] = 0b01111111;
byte[1] = 0b00001010;
тел.:
myFunction(0) = true;
myFunction(1) = true;
myFunction(7) = false;
myFunction(8) = false;
myFunction(9) = true;
myFunction(10) = false;
myFunction(11) = true;
каков наилучший способ сделать это?
спасибо!
1 ответов
вы можете использовать этот метод:
public boolean isSet(byte[] arr, int bit) {
int index = bit / 8; // Get the index of the array for the byte with this bit
int bitPosition = bit % 8; // Position of this bit in a byte
return (arr[index] >> bitPosition & 1) == 1;
}
bit % 8
- битовая позиция относительно byte
.arr[index] >> bit % 8
перемещает бит в index
бит 0 позиций.