Cの入力から16進数を読み取る方法は?[複製]

Nov 20 2020

ユーザーから16進数を読みたい。私はC99を使用しています。

私のアイデアは、charを読み取り、文字コードで16進数を確認することでした。

コードは次のとおりです。

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

しかし、もっと簡単な方法があるはずだと思います。それは1つの番号しか読み取れず、それ以上の番号は読み取れないためです。

何か助けになるものはありますか?

回答

nkrivenko Nov 20 2020 at 18:59

scanfは%x次のコマンドで使用できます。

#include <stdio.h>

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

出力:

a -> 10
ff -> 255