Comment lire un seul bit dans un tableau d'octets?
Question
Le problème est que j'ai un tableau d'octets avec 200 Index et que vous voulez juste vérifier que le bit est quatrième MonTableau [75] est égale à zéro (0) ou un (1).
byte[] MyArray; //with 200 elements
//check the fourth BIT of MyArray[75]
La solution
Le quatrième bit dans l'élément 75?
if((MyArray[75] & 8) > 0) // bit is on
else // bit is off
L'opérateur & vous permet d'utiliser une valeur en tant que masque.
xxxxxxxx = ?
00001000 = 8 &
----------------
0000?000 = 0 | 8
Vous pouvez utiliser cette méthode pour recueillir l'une des valeurs de bits en utilisant la même technique.
1 = 00000001
2 = 00000010
4 = 00000100
8 = 00001000
16 = 00010000
32 = 00100000
64 = 01000000
128 = 10000000
Autres conseils
Quelque chose comme:
if ( (MyArray[75] & (1 << 3)) != 0)
{
// it was a 1
}
En supposant que vous vouliez dire 4 bits de la droite.
Et vous pouvez vérifier System.Collections.BitArray
, juste pour être sûr que vous n'êtes pas réinventer la roue.
private bool BitCheck(byte b, int pos)
{
return (b & (1 << (pos-1))) > 0;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow