2013-09-21 10 views
5

私はバイト配列を持っていると、バイト配列のn番目の最下位ビットインデックスが1か0かどうかを調べる関数を持っています。この関数は、ビットが1の場合はtrueを返し、そうでない場合はfalseを返します。ビットは0です。バイト配列の最下位ビットは、バイト配列の0番目のインデックスの最後の有効ビットとして定義され、バイト配列の最上位ビットは、(バイトの最上位ビットとして定義されますarray.length - 1)バイト配列のインデックス例えばJavaのバイト配列の個々のビットをチェックしていますか?

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; 

これを行うための最善の方法は何ですか?

ありがとうございます!

+0

[バイトから特定の位置にあるビットの値を取得する方法](https://stackoverflow.com/questions/9354860/how-to-get-the-value-of-a) -bit-at-a-a-position-at-a-byte) –

+0

@MartinSchröderfirst - necroposting、second - no、それは間違いなく、ここで彼はバイトが必要です[] – Sarief

答えて

17

あなたがこの方法で使用することができます:

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 % 8byteに対する相対ビット位置です。
arr[index] >> bit % 8ビットをindexにビット0の位置に移動します。

+0

Gotcha、ありがとう! –

+0

@ RyanYuよろしくお願いします:) –

関連する問題