使用C语言将十六进制十进制转换为整数

问题

如何使用C编程语言将十六进制值转换为整数值?

解释概念。

解决方案

十六进制值以16个符号1到9和A到F表示。这里,A到F的十进制等效值为10到15。

示例

以下是使用函数将十六进制转换为整数的C程序-

#include<stdio.h>
#include<string.h>
#include<math.h>
int hextodc(char *hex){
   int y = 0;
   int dec = 0;
   int x, i;
   for(i = strlen(hex) - 1 ; i >= 0 ; --i)//{
      if(hex[i]>='0'&&hex[i]<='9'){
         x = hex[i] - '0';
      }
      else{
         x = hex[i] - 'A' + 10;
      }
      dec = dec + x * pow(16 , y);// 将十六进制转换为整数值++ y;
   }
   return dec;
}
int main(){
   char hex[100];
   printf("输入十六进制: ");
   scanf("%s", hex);
   printf("\nDecimal: %d", hextodc(hex));
   return 0;
}
输出结果

执行以上程序后,将产生以下结果-

1. 输入十六进制: A
   Decimal: 10
   2. 输入十六进制: A12
      Decimal: 2578

解释

从右到左扫描十六进制的所有字符

令扫描的字符为A。

将A转换为适当的十进制格式并将其存储在x中。

dec = dec + x * 16y

y = y + 1。

返回十进制。

我们也可以从左到右扫描十六进制值,但是,我们必须将y初始化为y = N – 1,并在每次迭代时递减y。N是十六进制的长度。