是否有预定义的函数可将 byte
转换为 BitArray
?
一种方法是检查每个 byte
值的每一位,然后执行位运算。我想知道是否有比这更简单的方法。
可以使用适当的BitArray()
构造函数,如此处所述。
var bits = new BitArray(arrayOfBytes);
您可以使用 new BitArray(new byte[] { yourBite })
调用它来创建一个包含一个字节的数组。
如果您有一个字节编号或整数等
BitArray myBA = new BitArray(BitConverter.GetBytes(myNumber).ToArray());
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;
}
BitArray
的长度不是字节位数(8)
的倍数,那么在从byte[]
转换为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;
}