十六进制转十进制

来源:互联网 发布:linux 开机启动sh 编辑:程序博客网 时间:2024/05/21 06:57

问题描述  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。样例输入FFFF样例输出65535


还别说,这编程真是一天不练就不行。编个进制转化都会WA好几遍,还是怪自己能力不够。



下面就顺便在程序中注释一下当时在哪里出错,不管是思路上还是代码技巧上


#include <iostream>#include<cstdio>#include<cstring>#include<cmath>#define LL long long//宏定义using namespace std;int main(){     LL ans=0;    string a;//C++中的字符串类型    cin>>a;    int len=a.length();//取字符串的长度    for(int j=len-1; j>=0; j--)    {        if(a[j]>='0'&&a[j]<='9')//不能漏掉0的情况                                //在十进制转十六进制中也错过 {            ans+=(a[j]-'0')*pow(16,len-j-1);//求权值,完全可以用16的多少次方,                                             //而我第一反应是用自定义函数,是麻烦了点 }        else if(a[j]>='A'&&a[j]<='F')        {            ans+=(a[j]-'A'+10)*pow(16,len-j-1);//第一个括号里面是把再大写字母转换为数字的方法        }    }  cout<<ans<<endl;    return 0;}

其实就是这么简单,嗯,,加油吧。


0 0