试题4:十六进制字符串转十进制字符串

试题描述:写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )

C语言解法

#include 
#include 
#include 
#include 


void convert16to10(char* str, int len)
{
    long sum = 0;
    int i = 0;
    for(i = len-1; i>=0; i--)
    {
        if((str[i] <= '9') && (str[i] >= '0'))
        {
            sum = sum + (str[i] - 48) * pow(16, len-i-1);
        }
        else if((str[i] <= 'F') && (str[i] >= 'A'))
        {
            sum = sum + (str[i] - 55) * pow(16, len-i-1);
        }

    }
    char num[100];
    itoa(sum, num, 10);


    //printf("%ld\n", sum);
    printf("%s\n", num);
}

int main()
{
    char str[100];

    while(gets(str))
    {
        int len = strlen(str);
        convert16to10(str, len);
    }
    return 0;
}

你可能感兴趣的:(试题4:十六进制字符串转十进制字符串)