2012-06-26 39 views
12

是否有任何預定義的函數可用於將byte轉換爲BitArray將C#字節轉換爲BitArray

一種方法是檢查byte值的每一位,然後執行按位操作。我想知道是否有任何比這更直接的方法。

+0

你應該改變你的問題。你想將字節或字節數組轉換爲System.Collections.BitArray嗎? – adatapost

+0

我的確切情況是從字節數組中轉換3個字節。下面介紹的方法適用於我。 –

回答

28

是,使用適當的BitArray() constructor描述here

var bits = new BitArray(arrayOfBytes); 

可以與new BitArray(new byte[] { yourBite })調用它來創建一個字節的陣列。

+0

如何在一次三個字節,比如說:新的BitArray(新的字節[] {m​​yBite1,myBite2,myBite2}) –

+5

@ShamimHafiz你怎麼樣嘗試呢? ;-)它應該工作。 – CodeCaster

7

,如果你有一個字節的數字,甚至一個整數,等

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

注意:您需要System.Linq的參考

2

解決方法很簡單,只有兩個指令(該指令被標記爲下面的代碼),簡單地使用Convert.ToString(btindx,2)將字節轉換爲二進制,將結果字符串填充到8位(或長度爲8),strBin.PadLeft(8,'0');,並連接所有二進制字符串以形成字節數組的位流。如果您願意,也可以形成用於分隔每個字節的二進制表示的字符串數組。

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