C语言关于从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。#字符串#的问题,如何解决?

问题:从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

想问一下我这个哪里错了

#include
#include
int main()
{
    char a[8] = { 0 } ;
    int i=0, len=0;
    long long sum = 0;
    gets(a);
    len = strlen(a);
    for (i = len; 0 < i; i--)
    {
        if (a[i] >= '0' && a[i] <='9')
        {
            sum = 16 * sum + a[i];
        }
        if (a[i] >= 'A' && a[i] <= 'F')
        {
            sum = 16 * sum + a[i] - 'A' + 10;
        }
    }
    printf("%lld", sum);
}


img

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^