44 if (NumBits <= 0 || NumBits > 32)
47 nextBitPos = BitBuffer->
BitPos + NumBits;
52 bytePos = BitBuffer->
BitPos / 8;
53 bitsInByte = BitBuffer->
BitPos % 8;
55 BitBuffer->
Data[bytePos] &= (uint8_t) (0xFF << (8 - bitsInByte));
56 shift = NumBits - (8 - bitsInByte);
58 BitBuffer->
Data[bytePos] |= (uint8_t) (Data >> shift);
60 BitBuffer->
Data[bytePos] |= (uint8_t) (Data << (-shift));
61 NumBits -= 8 - bitsInByte;
67 BitBuffer->
Data[bytePos] = (uint8_t) (Data >> shift);
69 BitBuffer->
Data[bytePos] = (uint8_t) (Data << (-shift));
73 BitBuffer->
BitPos = nextBitPos;