2012-03-17 22 views
5

Me preguntaba, ¿hay alguna manera de convertir un BitArray en un byte (opuesto a una matriz de bytes)? Voy a tener 8 bits en el BitArray ..¿Cómo obtener un solo byte de BitArray (sin 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); 

Esto es lo que tengo hasta ahora .... no importa si tengo que cambiar la matriz de bytes en un byte o si puedo cambiar el BitArray directamente en un byte. Preferiría poder cambiar el BitArray directamente en un byte ... ¿Alguna idea?

+1

No hay ningún punto en el uso de BitArray de un byte. Solo usa el | y & operadores en un byte. –

+0

'byte firstByte = bytes [0];'? (El último párrafo parece confuso.) –

+0

Parece que no puedo entender por completo usando &. Estoy usando bit shift para acceder un poco y configurarlo como quiera. Después de configurarlo, lo coloco en un BitArray. Parecía la manera más fácil de entender para mí. Si puedes explicarlo de una manera concisa, definitivamente cambiaré la forma en que lo estoy manejando ... PD. gracias por los comentarios/ayuda – BigBug

Respuesta

3

Se puede escribir un método de extensión

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; 
    } 

Se puede utilizar como tal

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

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

9 decimal = 1001 en binario

+0

Gracias, eso es lo que estaba buscando :) – BigBug