Código C / C ++ para tratar una matriz de caracteres como un flujo de bits

Tengo una gran cantidad de datos binarios en una matriz char [] que necesito interpretar como una matriz de valores empaquetados de 6 bits.

I podría siéntate y escribe un código para hacer esto, pero creo que tiene que haber una buena clase o función existente que alguien ya haya escrito.

Lo que necesito es algo como:

int get_bits(char* data, unsigned bitOffset, unsigned numBits);

para poder obtener el séptimo carácter de 6 bits en los datos llamando:

const unsigned BITSIZE = 6;
char ch = static_cast<char>(get_bits(data, 7 * BITSIZE, BITSIZE));

Respuestas a la pregunta(3)

Su respuesta a la pregunta