Invece esiste il tipo "bit" solo che molti non si ricordano dei famosi campi di bit: un tipo di dato struct che rappresenta un numero arbitrario di bit.

Se la stringa che passi al programma ha sempre lo stesso numeri di cifre binarie, puoi crearti nua struttura ad hoc e salvare, in ogni campo di questa struttura, ogni singolo elemento della stringa di bit passata al programma.

Questo è un esempio di campo di bit che rappresenta, a tutti gli effetti, un char (8 bit):
codice:
struct bits {
   unsigned a0 : 1;
   unsigned a1 : 1;
   unsigned a2 : 1;
   unsigned a3 : 1;
   unsigned a4 : 1;
   unsigned a5 : 1;
   unsigned a6 : 1;
   unsigned a7 : 1;
};
Ovviamente puoi espandere la struttura a tuo piacimento, aggiungendo o togliendo bit a seconda delle esigienze.

Dato che la stringa la puoi indicizzare come un array, è sufficiente controllare se l'i-esimo valore della stringa è 1 oppure 0 (ossia se l'i-esimo bit che devi rappresentare è 1 oppure 0).

Questo può essere facilmente reperito utilizzando questa funzione:
codice:
unsigned int getBit(char c) { return (c & 1); }
Ovviamente questa funzione ha senso applicarla solamente se ciascun carattere che gli viene passato è '1' oppure '0' altrimenti potrebbe tornare dei valori che non hanno, apparentemente, senso.


Ciao.