К сожалению, класс BitArray частично реализован в классе .Net Core (UWP). Например, класс BitArray не может вызвать методы CopyTo () и Count (). Я написал это расширение, чтобы заполнить пробел:
public static IEnumerable<byte> ToBytes(this BitArray bits, bool MSB = false)
{
int bitCount = 7;
int outByte = 0;
foreach (bool bitValue in bits)
{
if (bitValue)
outByte |= MSB ? 1 << bitCount : 1 << (7 - bitCount);
if (bitCount == 0)
{
yield return (byte) outByte;
bitCount = 8;
outByte = 0;
}
bitCount--;
}
// Last partially decoded byte
if (bitCount < 7)
yield return (byte) outByte;
}
Метод декодирует BitArray в байтовый массив с использованием логики LSB (менее значимый байт). Это та же логика, которая используется классом BitArray. Вызов метода с параметром MSB, установленным в значение true, приведет к получению декодированной байтовой последовательности MSB. В этом случае помните, что вам, возможно, также понадобится обратить вспять итоговую коллекцию выходных байтов.