基础练习 十六进制转十进制

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

65535

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=100000+5;long long  cmp[maxn];string str;long long solve(int n){    int s=1;    for(int i=0;i<n;i++)        s*=16;    return s;}int main(){    cin>>str;    reverse(str.begin(),str.end());    long long sum=0;    for(int i=0;i<str.length();i++)    {        if(str[i]>='0'&&str[i]<='9')            cmp[i]=str[i]-'0';        else            cmp[i]=str[i]-55;        sum+=(cmp[i]*solve(i));    }    cout<<sum<<endl;    return 0;}


#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;const int maxn=100000+5;long long cmp[maxn];char str[maxn];long long solve(int n){    int s=1;    for(int i=0;i<n;i++)        s*=16;    return s;}int main(){    cin>>str;    int len=strlen(str);    long long sum=0;    for(int i=len-1;i>=0;i--)    {        if(str[i]>='0'&&str[i]<='9')            cmp[i]=str[i]-'0';        else            cmp[i]=str[i]-55;        sum+=(cmp[i]*solve(len-i-1));    }    cout<<sum<<endl;    return 0;}


0 0
原创粉丝点击