c语言16进制转换为10进制数的函数是什么?

 我来答
tattackor
推荐于2019-10-08 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:1055万
展开全部

1、可以根据16进制转10进制的算法(即各位位码值乘以位权之和)来实现该功能。
2、具体实现方法可以参考如下程序:

#include <stdio.h>
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); // 输出转换后的结果
}
开心地的春天
2018-05-23 · TA获得超过1.7万个赞
知道小有建树答主
回答量:115
采纳率:100%
帮助的人:6.2万
展开全部

方案一:

#include<stdio.h>#include<math.h>#include<string.h>int main(){char s[50];scanf("%s",s);int t=strlen(s);long sum=0;for(int i=0;i<t;i++){if(s[i]>='A' && s[i]<='Z')s[i]=int(s[i]-'A')+10+'0';sum+=((s[i]-'0')*(pow(16,t-1-i)));}printf("%ld\n",sum);}

方案二:

#include<stdio.h>int main(){char s[50];scanf("%s",s);int t;long sum=0;for(int i=0;s[i];i++){if(s[i]<='9')t=s[i]-'0';elset=s[i]-'A'+10;sum=sum*16+t;}printf("%ld\n",sum);return 0;}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我是大角度
高粉答主

2018-03-07 · 学会学习,学会运动,学会自我保养
我是大角度
采纳数:56459 获赞数:499203

向TA提问 私信TA
展开全部

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

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

#include <stdio.h>
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); // 输出转换后的结果
}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式