C语言 · 十六进制转十进制
基础练习 十六进制转十进制
时间限制:1.0s 内存限制:512.0MB
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
思路:
需要留意的是sum的类型,数大点就不通过。——用long long型就够了,用lld输出。
代码一:
1 #include<stdio.h> 2 #include<string.h> 3 int main(){ 4 char s[50]; 5 scanf("%s",&s); 6 int t,len; 7 len = strlen(s); 8 long long sum=0; 9 for(int i=0;i<len;i++){ 10 if(s[i]<='9') 11 t=s[i]-'0'; 12 else 13 t=s[i]-'A'+10; 14 sum=sum*16+t; 15 } 16 printf("%lld",sum); 17 return 0; 18 }
代码二:
1 #include<stdio.h> 2 #include<math.h> 3 #include<string.h> 4 int main(){ 5 char s[20]; 6 int i = 0, t = 0, temp = 0; 7 scanf("%s",s); 8 t = strlen(s);//得到字符串长度 9 long long answer=0; 10 for(int i=0;i<t;i++){ 11 if(s[i]>='A' && s[i]<='Z') 12 s[i]=int(s[i]-'A')+10+'0'; 13 answer+=((s[i]-'0')*(pow(16,t-1-i))); 14 } 15 printf("%lld",answer); 16 return 0; 17 }
代码三:
1 #include<stdio.h> 2 #include<string.h> 3 #include<math.h> 4 int main(){ 5 char strHex[10]; 6 int i = 0, len = 0, temp = 0; 7 long long answer = 0; 8 gets(strHex); 9 len = strlen(strHex); 10 for (i = 0; strHex[i] != '\0'; ++i){ 11 switch(strHex[i]){ 12 case 'A': temp = 10; break; 13 case 'B': temp = 11; break; 14 case 'C': temp = 12; break; 15 case 'D': temp = 13; break; 16 case 'E': temp = 14; break; 17 case 'F': temp = 15; break; 18 default: temp = strHex[i]-'0'; break; 19 } 20 answer += (temp*pow(16,len-1-i)); 21 } 22 printf("%lld",answer); 23 return 0; 24 }
分类:
C语言
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架