2012-06-26 16 views
12

Esiste una funzione predefinita disponibile per convertire uno byte in BitArray?Conversione del byte C# in BitArray

Un modo sarebbe quello di ispezionare ogni bit del valore byte e quindi eseguire l'operazione bit per bit. Mi stavo chiedendo se esiste un modo più semplice di questo.

+0

Si dovrebbe riformulare la domanda. Vuoi convertire array di byte o byte in System.Collections.BitArray? – adatapost

+0

la mia situazione esatta è quella di convertire 3 byte da una matrice di byte. Il metodo descritto di seguito funzionerebbe per me. –

risposta

28

Sì, utilizzando l'apposito BitArray() constructor come descritto here:

var bits = new BitArray(arrayOfBytes); 

Si può chiamare con new BitArray(new byte[] { yourBite }) per creare una matrice di un byte.

+0

circa tre byte alla volta, dì qualcosa del tipo: nuovo BitArray (nuovo byte [] {myBite1, myBite2, myBite2}) –

+5

@ShamimHafiz che ne dici di provarlo? ;-) Dovrebbe funzionare. – CodeCaster

7

se si dispone di un numero di byte o anche un intero, ecc

BitArray myBA = new BitArray(BitConverter.GetBytes(myNumber).ToArray()); 

Nota: è necessario un riferimento a System.Linq

2

soluzione è semplice, a soli due istruzioni (quali figura codice seguente), convertire semplicemente byte in binario usando Convert.ToString(btindx,2), azzerare la stringa risultante a 8 bit (o lunghezze 8), strBin.PadLeft(8,'0'); e concatenare tutte le stringhe binarie per formare un flusso di bit del proprio array di byte. Se lo si desidera, è anche possibile creare una serie di stringhe per separare la rappresentazione binaria di ogni byte.

byte[] bt = new byte[2] {1,2}; 

    string strBin =string.Empty; 
    byte btindx = 0; 
    string strAllbin = string.Empty; 

    for (int i = 0; i < bt.Length; i++) 
    { 
     btindx = bt[i]; 

     strBin = Convert.ToString(btindx,2); // Convert from Byte to Bin 
     strBin = strBin.PadLeft(8,'0'); // Zero Pad 

     strAllbin += strBin; 
    }