16进制转10进制

给出一个16进制,转换成10进制数

如:“F4”  --> 244

16进制转换成10进制:A-F对应10-15

F4 = 15*16^1 + 4*16^0 = 244

主要是将字符转换成数字

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<math.h>

int hex_to_dec(char *a)
{
    int len = strlen(a);
    int sum = 0;
    for (int i = 0;i < len;i++)
    {
        if(a[i] >= 'A' && a[i] <= 'F')
        {
            a[i] = int(a[i] - 'A') + 10 + '0';
        }
        if(a[i] >= 'a' && a[i] <= 'f')
        {
            a[i] = int (a[i] - 'a') + 10 + '0';
        }
        //pow(16.0,2)16的2次方
        sum += (a[i] - '0') * (pow(16.0,len - 1 - i));
    }
    return sum;
}
int main()
{
    char a[10];
    scanf("%s",&a);
    printf("%d\n",hex_to_dec(a));
}

 

posted @ 2020-03-06 13:57  Lucky&  阅读(3174)  评论(0编辑  收藏  举报
//返回顶部开始
//返回顶部结束