Ciao,
Non è molto complicato...
imposti un risultato=0
in un ciclo in cui leggi in tutto 8 chars:
- prendi il char c
- togli a c il carattere '0' (in modo che diventi un intero pari a 0 oppure 1)
- assegni a risultato la or tra risultato e il numero
- shifti il risultato a sinistra di un bit se non siamo arrivati all'ultimo carattere.
Al termine degli otto caratteri nel risultato hai il valore dei primi otto bit nell'ordine consueto di lettura della stringa (da sinistra verso destra).
Per illustrarti meglio facciamo un esempio:
Supponiamo che la sottostringa interessata stringa sia "11011001" (in esadecimale sarebbe 0xD9) e vediamo come muta risultato negli 8 passi del ciclo:
1)
-Leggo '1', gli tolgo '0' ed ottengo il valore 1
-risultato = risultato or 1 ed il valore binario di risultato è 00000001
-shifto il risultato a sinistra di un bit, risultato diventa 00000010 (2)
2)
-Leggo '1', gli tolgo '0' ed ottengo il valore 1
-risultato = risultato or 1 ed il valore binario di risultato è 00000011
-shifto il risultato a sinistra di un bit, risultato diventa 00000110 (6)
3)
-Leggo '0', gli tolgo '0' ed ottengo il valore 0
-risultato = risultato or 1 ed il valore binario di risultato è 00000110
-shifto il risultato a sinistra di un bit, risultato diventa 00001100 (0x0C)
4)
-Leggo '1', gli tolgo '0' ed ottengo il valore 1
-risultato = risultato or 1 ed il valore binario di risultato è 00001101
-shifto il risultato a sinistra di un bit, risultato diventa 00011010 (0x1A)
5)
-Leggo '1', gli tolgo '0' ed ottengo il valore 1
-risultato = risultato or 1 ed il valore binario di risultato è 00011011
-shifto il risultato a sinistra di un bit, risultato diventa 00110110 (0x36)
6)
-Leggo '0', gli tolgo '0' ed ottengo il valore 0
-risultato = risultato or 1 ed il valore binario di risultato è 00110110
-shifto il risultato a sinistra di un bit, risultato diventa 01101100 (0x6C)
7)
-Leggo '0', gli tolgo '0' ed ottengo il valore 0
-risultato = risultato or 1 ed il valore binario di risultato è 01101100
-shifto il risultato a sinistra di un bit, risultato diventa 11011000 (0xD8)
8 )
-Leggo '1', gli tolgo '0' ed ottengo il valore 1
-risultato = risultato or 1 ed il valore binario di risultato è 11011001 (0xD9)
Se vuoi leggere la stringa da destra verso sinistra dovrai fare in maniera analoga, solo che dovrai far entrare i bit da destra invece che da sinistra (il che implica degli and e degli shift aggiuntivi).
Ciaociao