public byte[] ReadBitsAsBytes(int numBits)
{
if ( numBits <= 0 || numBits > 64 )
{
throw new InvalidOperationException(string.Format("Invalid number of bits to read {0}", numBits));
}
var bytes = new byte[(int)Math.Ceiling((numBits / 8.0))];
var selectedBits = new bool[numBits];
for(int i = 0; i < numBits; ++i)
{
selectedBits[i] = _bits[Position + i];
}
Position += numBits;
var ba = new BitArray(selectedBits);
ba.CopyTo(bytes, 0);
return bytes;
}