所以说我有一个字节数组,并且我有一个函数来检查字节数组的第n个最低有效位索引是1还是0.如果该位是1则返回true,如果该位则返回false字节数组的最低有效位定义为字节数组第0个索引中的最后一个有效位,字节数组的最高有效位定义为(字节数组中的最高有效位). length – 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;
做这个的最好方式是什么?
谢谢!
解决方法
您可以使用此方法:
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是相对于字节的位位置.arr [index]>> bit%8将索引处的位移动到位0位置.