Se hai una cifra-carattere in un char la puoi trasformare in un numero con una sottrazione più un cast. Un char di fatto è un tipo numerico, e i caratteri delle cifre sono sequenziali (fatto garantito dallo standard); puoi quindi fare:
codice:
char unCarattere;
/* ... */
int cifra = (int) unCarattere-'0';