2012-03-17 17 views
5

Mi chiedevo, c'è un modo per convertire un BitArray in un byte (opposto a un array di byte)? Avrò 8 bit nel BitArray ..Come ottenere un singolo byte da BitArray (senza byte [])?

BitArray b = new BitArray(8); 


//in this section of my code i manipulate some of the bits in the byte which my method was given. 

byte[] bytes = new byte[1]; 
b.CopyTo(bytes, 0); 

Questo è quello che ho finora .... non importa se devo cambiare l'array di byte in un byte o se posso cambiare il BitArray direttamente in un byte. Preferirei essere in grado di cambiare BitArray direttamente in un byte ... qualche idea?

+1

Non c'è nessun punto nel usando BitArray per un byte. Basta usare il | e & operatori su un byte. –

+0

'byte firstByte = byte [0];'? (L'ultimo paragrafo sembra confuso). –

+0

Non riesco a spiegarmi interamente usando &. Uso il bit shift per accedere a un bit e impostarlo come voglio. Dopo averlo impostato, lo metto in un BitArray. Sembrava il modo più semplice per me di capire ... Se riesci a spiegarlo in modo conciso, cambierò definitivamente il modo in cui lo gestisco ... PS. grazie per i commenti/aiuto – BigBug

risposta

3

È possibile scrivere un metodo di estensione

static Byte GetByte(this BitArray array) 
    { 
     Byte byt = 0; 
     for (int i = 7; i >= 0; i--) 
      byt = (byte)((byt << 1) | (array[i] ? 1 : 0)); 
     return byt; 
    } 

Si può usare in questo modo

 var array = new BitArray(8); 
     array[0] = true; 
     array[1] = false; 
     array[2] = false; 
     array[3] = true; 

     Console.WriteLine(array.GetByte()); <---- prints 9 

9 decimale = 1001 in binario

+0

Grazie, questo è quello che stavo cercando :) – BigBug

Problemi correlati