c中的十六进制转为十进制

本文概述

  • 什么是十六进制?
  • 什么是十进制?
什么是十六进制?十六进制也称为base-16,它是一个数字系统,使用16个符号表示特定值,这些符号来自(0-9和A-F)。
什么是十进制?十进制是表示整数和非整数的数字系统。此数字系统也称为以10为底的系统,它使用(0-9)中的10个符号表示特定值。
十六进制到二进制数的转换
我们知道十六进制数包含16个符号,即0、1、2、3、4、5、6、7、8、9,A,B,C,D,E,F其中A,B,C,D ,E,F表示(10, 11, 12, 13, 14, 15)个值。我们可以通过从十六进制数字中提取数字,然后从数字的最右边的数字开始来找到十进制数字。十六进制数字的每个数字都与基数16相乘。我们会将相乘的结果存储在特定变量中。
让我们通过一个例子来理解。
如果十六进制数字为5A,则其十进制值为:
十进制值= 5 * 161 10 * 160 = 90
现在,我们以图形方式了解了十六进制到十进制的转换:
c中的十六进制转为十进制

文章图片
在上图中,我们将2AB视为十六进制数,并计算了其十进制值。
2AB(十六进制值)= 2 * 162 10 * 161,11 * 160 = 683(十进制值)
让我们通过程序来理解。
#include < stdio.h> #include < math.h> #include < string.h> int main() { char hex[17]; // declaration of character array. long long decimal, place; int i = 0, val, len; // variables declaration decimal = 0; /* Input hexadecimal number from user */ printf("Enter any hexadecimal number: "); gets(hex); /* Find the length of total number of hex digit */ len = strlen(hex); len--; /* * Iterate over each hex digit */ while(hex[i]!='\0') { /* To find the decimal representation of hex[i] */ if(hex[i]>='0' & & hex[i]< ='9') { val = hex[i] - 48; } else if(hex[i]>='a' & & hex[i]< ='f') { val = hex[i] - 97 + 10; } else if(hex[i]>='A' & & hex[i]< ='F') { val = hex[i] - 65 + 10; }decimal += val * pow(16, len);

在上面的程序中,我们找到给定十六进制数的十进制数。在上述情况下,我们从用户处获取输入并将其值存储在十六进制变量中。从用户检索输入后,我们计算输入的长度并将其存储在len变量中。我们已经迭代了十六进制数字的每个数字,并将最终结果存储在十进制值变量中
【c中的十六进制转为十进制】输出量
c中的十六进制转为十进制

文章图片

    推荐阅读