十六进制转十进制

来源:互联网 发布:wps选定数据求和为0 编辑:程序博客网 时间:2024/06/05 16:58
问题描述
  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535


#include <iostream>#include <string>#include<math.h>#include<stdio.h>using namespace std;int main(){string str;long long sum=0;cin>>str;int str_len=str.length();for(int i=0;i<str_len;i++){if(str[i]>='A'){sum+=(str[i]-'A'+10)*pow(16,str_len-1-i);}else{sum+=(str[i]-'0')*pow(16,str_len-1-i);} }printf("%I64d\n",sum);return 0;}
十六进制数不超过八位,int型数据存储不了,sum要用Long long 类型,并且要判断,十六进制数是否是字母,若是字母需要减去A+10,可以转化为对应的十六进制的数,若不是字母,直接将字符串转化为整数,在转化为十进制数。

0 0
原创粉丝点击