2012-03-17 38 views
5

Tôi đã tự hỏi, là có một cách để chuyển đổi một BitArray thành một byte (trái ngược với một mảng byte)? Tôi sẽ có 8 bit trong BitArray ..Làm cách nào để lấy một byte ra khỏi BitArray (không có 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); 

Đây là những gì tôi có cho đến nay .... không quan trọng nếu tôi phải thay đổi mảng byte thành byte hoặc nếu tôi có thể thay đổi BitArray trực tiếp vào một byte. Tôi muốn có thể thay đổi trực tiếp BitArray thành một byte ... bất kỳ ý tưởng nào?

+1

Không có điểm trong việc sử dụng BitArray cho một byte. Chỉ cần sử dụng | và các toán tử trên một byte. –

+0

'byte firstByte = byte [0];'? (Đoạn cuối cùng có vẻ khó hiểu.) –

+0

Tôi dường như không thể quấn quanh đầu bằng cách sử dụng &. Tôi đang sử dụng bit shift để truy cập một chút và thiết lập nó như tôi muốn. Sau khi tôi đặt nó, tôi đặt nó vào một BitArray. Dường như cách dễ nhất cho tôi để hiểu .. Nếu bạn có thể giải thích nó là một cách súc tích, tôi chắc chắn sẽ chuyển đổi cách tôi đang xử lý nó ... PS. cảm ơn cho các ý kiến ​​/ giúp đỡ – BigBug

Trả lời

3

Bạn có thể viết một phương pháp khuyến nông

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

Bạn có thể sử dụng nó như vậy

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

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

9 chữ số thập phân = 1001 ở dạng nhị phân

+0

Cảm ơn, đó là những gì tôi đang tìm kiếm :) – BigBug

Các vấn đề liên quan