2012-06-26 45 views
12

Có chức năng được xác định trước nào để chuyển đổi một số byte thành BitArray không?Chuyển đổi C# byte sang BitArray

Một cách là kiểm tra từng bit của giá trị byte và sau đó thực hiện thao tác bitwise. Tôi đã tự hỏi nếu có bất kỳ cách nào là đơn giản hơn này.

+0

Bạn nên đặt lại câu hỏi của mình. Bạn có muốn chuyển đổi mảng byte hoặc byte thành System.Collections.BitArray không? – adatapost

+0

tình hình chính xác của tôi là chuyển đổi 3 byte từ một mảng byte. Phương pháp được mô tả bên dưới sẽ hoạt động đối với tôi. –

Trả lời

28

Vâng, sử dụng thích hợp BitArray() constructor như mô tả here:

var bits = new BitArray(arrayOfBytes); 

Bạn có thể gọi nó với new BitArray(new byte[] { yourBite }) để tạo ra một mảng của một byte.

+0

khoảng ba byte tại một thời điểm, nói điều gì đó như: new BitArray (byte mới [] {myBite1, myBite2, myBite2}) –

+5

@ShamimHafiz bạn thử nó như thế nào? ;-) Nó sẽ hoạt động. – CodeCaster

7

nếu bạn có một số byte hoặc thậm chí một số nguyên vv

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

Lưu ý: bạn cần một tham chiếu đến System.Linq

2

Giải pháp rất đơn giản, chỉ cần hai hướng dẫn (được đánh dấu trong đoạn mã sau), chỉ cần chuyển đổi byte thành nhị phân bằng cách sử dụng Convert.ToString(btindx,2), không đệm chuỗi kết quả đến 8 bit (hoặc độ dài 8), strBin.PadLeft(8,'0'); và nối tất cả các chuỗi nhị phân để tạo thành một dòng bit của mảng byte của bạn, Nếu bạn thích, bạn cũng có thể tạo thành một chuỗi các chuỗi để phân tách biểu diễn nhị phân của mỗi 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; 
    } 
Các vấn đề liên quan