如何从 C 中的输入读取十六进制数?

How to read hexadecimal numbers from input in C?

我想从用户那里读取一个十六进制数。我用的是C99.

我的想法是读取一个字符并通过字符代码检查它可能是什么十六进制数。

代码如下:

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

但我认为应该有更简单的方法。因为它只能读取一个数字,不能读取更长的数字。

有什么可以帮助的吗?

您可以将 scanf 与 %x 一起使用:

#include <stdio.h>

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

输出:

a -> 10
ff -> 255