private byte[] GetBytes(BitArray bitArray)
{
// TODO: is there a more efficient way to do this?
var bytes = new byte[(bitArray.Length + 7) / 8];
var i = 0;
foreach (bool value in bitArray)
{
if (value)
{
var index = i / 8;
var bit = i % 8;
bytes[index] |= (byte)(1 << bit);
}
i++;
}
return bytes;
}
}