Вы можете использовать SelectMany
для этого. Сначала начнем с метода, который преобразует один byte
в массив bool
:
static bool[] ByteToBools(byte value)
{
var values = new bool[8];
values[0] = (value & 1) == 0 ? false : true;
values[1] = (value & 2) == 0 ? false : true;
values[2] = (value & 4) == 0 ? false : true;
values[3] = (value & 8) == 0 ? false : true;
values[4] = (value & 16) == 0 ? false : true;
values[5] = (value & 32) == 0 ? false : true;
values[6] = (value & 64) == 0 ? false : true;
values[7] = (value & 128) == 0 ? false : true;
return values;
}
Теперь мы просто SelectMany
над массивом byte
, и для каждого байта мы вызываем ByteToBools
:
var numbers = new byte[]{1, 2, 3, 5, 255};
var bits = numbers.SelectMany(number => ByteToBools(number));
foreach(var bit in bits)
{
Console.WriteLine(bit);
}