Jak czytać liczby szesnastkowe z wejścia w C? [duplikować]

Nov 20 2020

Chcę odczytać od użytkownika liczbę szesnastkową. Używam C99.

Moim pomysłem było przeczytanie znaku i sprawdzenie po kodzie znaku, jaka może to być liczba szesnastkowa.

Oto kod:

#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;
}

Ale myślę, że powinny być łatwiejsze sposoby. Ponieważ może odczytać tylko jedną liczbę, a nie dłuższe.

Czy jest coś, co mogłoby pomóc?

Odpowiedzi

nkrivenko Nov 20 2020 at 18:59

Możesz używać scanf z %x:

#include <stdio.h>

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

Wynik:

a -> 10
ff -> 255