Come leggere un singolo bit in un array di byte?
Domanda
Il problema è che ho un array di byte con 200 indici e voglio solo verificare che è il quarto pezzo di MyArray [75] è pari a zero (0) o un (1).
byte[] MyArray; //with 200 elements
//check the fourth BIT of MyArray[75]
Soluzione
Il quarto bit nell'elemento 75?
if((MyArray[75] & 8) > 0) // bit is on
else // bit is off
L'operatore & consente di utilizzare un valore come una maschera.
xxxxxxxx = ?
00001000 = 8 &
----------------
0000?000 = 0 | 8
È possibile utilizzare questo metodo per raccogliere qualsiasi dei valori bit utilizzando la stessa tecnica.
1 = 00000001
2 = 00000010
4 = 00000100
8 = 00001000
16 = 00010000
32 = 00100000
64 = 01000000
128 = 10000000
Altri suggerimenti
Qualcosa di simile:
if ( (MyArray[75] & (1 << 3)) != 0)
{
// it was a 1
}
Supponendo che intendevi 4 bit da destra.
E si potrebbe voler controllare System.Collections.BitArray
, solo per essere sicuri che non stai reinventare la ruota.
private bool BitCheck(byte b, int pos)
{
return (b & (1 << (pos-1))) > 0;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow