2012-06-26 11 views
12

Czy istnieje dowolna predefiniowana funkcja dostępna do przekonwertowania byte na BitArray?Konwertowanie bajtu C# na BitArray

Jednym ze sposobów jest sprawdzenie każdej wartości wartości byte, a następnie wykonanie operacji bitowej. Zastanawiałem się, czy istnieje jakiś sposób, który jest prostszy niż to.

+0

Powinieneś przeformułować swoje pytanie. Czy chcesz przekonwertować bajt lub tablicę bajtów na System.Collections.BitArray? – adatapost

+0

Moja dokładna sytuacja polega na konwersji 3 bajtów z tablicy bajtowej. Opisana poniżej metoda zadziałałaby dla mnie. –

Odpowiedz

28

Tak, stosując odpowiednią BitArray() constructor opisanym here:

var bits = new BitArray(arrayOfBytes); 

można nazwać z new BitArray(new byte[] { yourBite }) utworzyć tablicę jednego bajta.

+0

co powiecie na trzy bajty na raz, powiedz coś takiego: nowy BitArray (nowy bajt [] {mójBite1, myBite2, myBite2}) –

+5

@ShamimHafiz, jak możesz spróbować? ;-) Powinno działać. – CodeCaster

7

jeśli masz kilka bajtów lub nawet całkowitą itd

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

Uwaga: trzeba odniesienie do System.Linq

2

Rozwiązanie jest proste, tylko dwie instrukcje (które są oznaczone w po kodzie), po prostu przekonwertuj bajt na binarny używając Convert.ToString(btindx,2), zeruj wynikowy ciąg do 8 bitów (lub długości 8), strBin.PadLeft(8,'0'); i łącz wszystkie binarne łańcuchy, aby utworzyć bitowy strumień twojej tablicy bajtów. Jeśli chcesz, możesz również utworzyć tablica ciągów znaków w celu oddzielenia binarnej reprezentacji każdego bajtu.

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