2013-09-21 11 views
5

Also sagen, ich habe eine Byte-Array, und ich habe eine Funktion, die überprüft, ob der n-te niedrigste Bit-Index des Byte-Array ist eine 1 oder 0. Die Funktion gibt wahr, wenn das Bit eine 1 und falsch ist das Bit ist eine 0. Das niedrigstwertige Bit des Bytearrays ist als das letzte signifikante Bit im 0. Index des Bytearrays definiert, und das höchstwertige Bit des Bytearrays ist als das höchstwertige Bit im Byte definiert array.length - 1) der Index des Byte-Arrays.Überprüfen einzelner Bits in einem Byte-Array in Java?

Zum Beispiel

byte[] myArray = new byte[2]; 
byte[0] = 0b01111111; 
byte[1] = 0b00001010; 

Aufruf:

myFunction(0) = true; 
myFunction(1) = true; 
myFunction(7) = false; 
myFunction(8) = false; 
myFunction(9) = true; 
myFunction(10) = false; 
myFunction(11) = true; 

Was ist der beste Weg, dies zu tun?

Danke!

+0

Mögliches Duplikat von [Wie bekomme ich den Wert eines Bits an einer bestimmten Position von einem Byte?] (Https://stackoverflow.com/questions/9354860/how-to-get-the-value-of-a -bit-an-einer-bestimmten-position-from-ate) –

+0

@ MartinSchröder zuerst - nekroposting, zweitens - nein, es ist definitiv anders, hier benötigt er byte [] – Sarief

Antwort

17

können Sie diese Methode verwenden:

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 ist die Bit-Position relativ zu einem byte.
arr[index] >> bit % 8 verschiebt das Bit bei index in Bit 0 Position.

+0

Gotcha, danke ein Haufen! –

+0

@RyanYu Gern geschehen :) –

Verwandte Themen