>>192
取り敢えず、これでどうだろう。
unsigned char foo = 'f';
printf("%d\n", foo >= '0' && foo <= '9' ? foo - '0' : foo >= 'a' && foo <= 'f' ? foo - 'a' + 10 : -1);