Обычно бывает проще сразу strtol() или strtoul() использовать чем с
каждой буквой отдельно разбираться. Но можно и так: int t = ASCIIchar;
if( (t >= '0') && (t <= '9') )
return t - '0';
else if( t >= 'A' && t <= 'F' )
return t - 'A' + 10;
else if( t >= 'a' && t <= 'f' )
return t - 'a' + 10;
else
return -1;;