Reputation: 22114
Is there any predefined function available to convert a byte
into BitArray
?
One way would be to inspect every bit of the byte
value and then perform bitwise operation. I was wondering if there is any way which is more straightforward than this.
Upvotes: 18
Views: 79530
Reputation: 3222
If the length of the BitArray
in question is not intended to be a multiple of the number of bits in a byte (8)
you can do something like this to ensure the correct number of bits when converting from byte[]
to BitArray
:
public static byte[] ToByteArray (this BitArray bits) {
byte[] ret = new byte[(bits.Length - 1) / 8 + 1];
bits.CopyTo (ret, 0);
return ret;
}
public static BitArray ToBitArray (this byte[] bytes, int bitCount) {
BitArray ba = new BitArray (bitCount);
for (int i = 0; i < bitCount; ++i) {
ba.Set (i, ((bytes[i / 8] >> (i % 8)) & 0x01) > 0);
}
return ba;
}
Upvotes: 1
Reputation: 57
Solution is simple, just two instructions (which are marked in following code), simply convert byte to binary using Convert.ToString(btindx,2)
, zero pad the resultant string to 8 bits (or lengths 8),strBin.PadLeft(8,'0');
and concatenate all binary strings to form a bit stream of your byte array, If you like, you can also form an array of strings to separate each byte's binary representation.
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;
}
Upvotes: 3
Reputation: 616
if you have a byte number or even an integer, etc.
BitArray myBA = new BitArray(BitConverter.GetBytes(myNumber).ToArray());
Note: you need a reference to System.Linq
Upvotes: 8
Reputation: 151720
Yes, using the appropriate BitArray()
constructor as described here:
var bits = new BitArray(arrayOfBytes);
You can call it with new BitArray(new byte[] { yourBite })
to create an array of one byte.
Upvotes: 45