Comment lire les nombres hexadécimaux à partir de l'entrée en C? [dupliquer]

Nov 20 2020

Je veux lire un nombre hexadécimal de l'utilisateur. J'utilise C99.

Mon idée était de lire un caractère et de vérifier par le code de caractère quel nombre hexadécimal il pouvait s'agir.

Voici le code:

#include <stdio.h>
int main() {
    char count;
    int c;
    printf("Enter hex value:\n");
    scanf("%c", &count);
    if (count >= 48 && count <= 57) {
        c = count - 48;
    }
    if (count >= 65 && count <= 70) {
        c = count - 55;
    }
    if (count >= 97 && count <= 102) {
        c = count - 87;
    }
    printf("%d", c);
    return 0;
}

Mais je pense qu'il devrait y avoir des moyens plus faciles. Parce qu'il ne peut lire qu'un seul nombre et pas des plus longs.

Y a-t-il quelque chose qui pourrait aider?

Réponses

nkrivenko Nov 20 2020 at 18:59

Vous pouvez utiliser scanf avec %x:

#include <stdio.h>

int main() {
    int a;
    scanf("%x", &a);
    printf("%d", a);
}

Production:

a -> 10
ff -> 255