Ce code convertira un nombre hexadécimal en une valeur décimale.Pourquoi ce code fonctionne-t-il pour convertir un nombre hexadécimal en nombre décimal?
int value;
// ch is a char variable holding a hexadecimal digit
if (isxdigit(ch))
if (isdigit(ch))
value = ch - '0';
else
value = tolower(ch) - 'a' + 10;
else
fprintf(stderr, "%c is not a valid hex digit", ch);
Je ne comprends pas très bien comment cela fonctionne. Je peux voir que différentes choses sont soustraites de la variable char selon qu'il s'agisse d'un nombre ou d'une lettre. Je peux comprendre la partie où un nombre est converti, mais je ne comprends pas pourquoi 10 doit être ajouté à la valeur quand le caractère est une lettre.