C语言如何实现十六进制数到十进制数的转化?

2024-12-26 15:19:04
推荐回答(5个)
回答1:

可以根据16进制转10进制的算法(即各位位码值乘以位权之和)来实现该功能。


具体实现方法可以参考如下程序:

#include 
void main()
{
     int he;    
     int re=0;   // 保存转换为10进制的结果
     int k=16;   // 16进制
     int n=1;    // 位权
     scanf("%d", &he);  // 接收用户输入的16进制数,不含0x前缀
     while(he != 0)  
     {
         re += (he%10)*n;  // 取出各位位码值,并乘以对应的位权值
         he /= 10;   // 去掉16进制数的最低位,次低位变为最低位
         n *= k;     // 位权乘以16
     }
     printf("%d",re); // 输出转换后的结果
}

回答2:

#include
void
main(){
int
i=0;
int
value=0;
char
ch[10];
printf("请输入一个16进制数:");
gets(ch);
while
(ch[i])
{
if(ch[i]>='A'&&ch[i]<='F')
value=(ch[i]-55)+16*value;
else
if(ch[i]>='a'&&ch[i]<='f')
value=(ch[i]-87)+16*value;
else
if(ch[i]>='0'&&ch[i]<='9')
value=(ch[i]-48)+16*value;
else
{
printf("输入有误\n");
break;
}
i++;
}
printf("十进制数为%d\n",value);
}

回答3:

#include
void
main()
{
int
a;
printf("输入十六进制数:");
scanf("%x",
&a);
printf("%x对应的十进制数为%d\n",
a,
a);
}

回答4:

可以根据16进制转10进制的算法(即各位位码值乘以位权之和)来实现该功能。
具体实现方法可以参考如下程序:
#include
void main()
{
int he;
int re=0; // 保存转换为10进制的结果
int k=16; // 16进制
int n=1; // 位权
scanf("%d", &he); // 接收用户输入的16进制数,不含0x前缀
while(he != 0)
{
re += (he%10)*n; // 取出各位位码值,并乘以对应的位权值
he /= 10; // 去掉16进制数的最低位,次低位变为最低位
n *= k; // 位权乘以16
}
printf("%d",re); // 输出转换后的结果
}

回答5:

#include

void main()
{
int he=34;//16进制的34
int re=0;//10进制保存结果
int k=16;//16进制
int n=1;//位权
while(he!=0)
{
re+=(he%10)*n;
he/=10;
n*=k;
}
printf("%d",re);
}