/// <summary> /// Convert BitArray into Byte /// </summary> /// <param name="bitArray">Bit Array which converted Byte</param> /// <param name="b">Byte converted by BitArray</param> /// <param name="position">position for free bits in byte</param> /// <returns> rest bits, rest bits in byte</returns> private AppendBitResult AppendBitToByte(BitArray bitArray, ref byte b, int position) { int bitArrayPointer = 0; while (position < 8 && bitArrayPointer < bitArray.Length) { SetBit(ref b, position, bitArray[bitArrayPointer]); position++; bitArrayPointer++; } AppendBitResult result = new AppendBitResult(); if (bitArrayPointer < bitArray.Length) { result.RestBits = bitArray.CopyToNew(bitArrayPointer); } if (position < 8) { result.RestPositionIntoBit = position; } return result; }