LSB из массива байтов C#
Мне нужно выбрать из массива байтов массив наименее значимых бит в BitArray. У меня есть код для поиска lsb. Но я не знаю, как добавить этот массив в BitArray
private static bool GetBit(byte b)
{
return (b & 1) != 0;
}
2 ответа
Решение
Итак, сначала я бы преобразовал его в массив bool, а затем создал BitArray из этого массива bool:
static void Main(String[] args)
{
byte[] byteArray = new byte[] { 1, 2, 3, 4, 5, 6 };
BitArray bitArray = transform(byteArray);
}
private static bool GetBit(byte b)
{
return (b & 1) != 0;
}
private static BitArray transform(byte[] byteArray)
{
bool[] boolArray = new bool[byteArray.Length];
for(int i = 0; i < byteArray.Length; i++)
{
boolArray[i] = GetBit(byteArray[i]);
}
return new BitArray(boolArray);
}
Редактировать:
Вот решение с массивом массивов:
static void Main(String[] args)
{
byte[][] byteArrays = new byte[2][];
byteArrays[0] = new byte[] { 1, 2, 3, 4, 5, 6 };
byteArrays[1] = new byte[] { 1, 2, 3, 4, 5, 6 };
BitArray[] bitArrays = new BitArray[byteArrays.Length];
for(int i = 0; i < byteArrays.Length; i++)
{
byte[] byteArray = byteArrays[i];
bitArrays[i] = transform(byteArray);
}
}
private static bool GetBit(byte b)
{
return (b & 1) != 0;
}
private static BitArray transform(byte[] byteArray)
{
bool[] boolArray = new bool[byteArray.Length];
for(int i = 0; i < byteArray.Length; i++)
{
boolArray[i] = GetBit(byteArray[i]);
}
return new BitArray(boolArray);
}
static void Main(string[] args) { byte[] bytes = new byte[] { 5, 7, 8, 1, 3, 5, 6, 1, 0 }; byte[] b = bytes.Where(q => GetBit(q) == true).ToArray(); BitArray bitArray = new BitArray(b); Console.Read(); } private static bool GetBit(byte b) { return (b & 1) != 0; }