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]
È stato utile?

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
scroll top