十六进制转十进制

问题描述
  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
 
需要注意变量的类型,用int 和long后检测错误得分75;换成longlong后正确
 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 int te(int a,int n)///a的n次方 
 5 {int ret=1;
 6 while(n!=0)
 7 {
 8 if(n&1==1)
 9     ret*=a;
10 a*=a;
11 n>>=1;
12 }
13 return ret;
14 }
15 
16 int main()
17 {
18 string str;
19 cin>>str;
20 long long a=0; 
21 for(int i=0;i<str.length();i++)
22     {
23     long long k=1;
24     if(str[i]>=48&&str[i]<=57)//判断ascii 
25         k=str[i]-48;
26     else
27         k=str[i]-65+10;
28     a+=k*te(16,str.length()-i-1);
29     }
30 cout<<a;
31 return 0;
32 }

 

posted @ 2019-02-26 18:09  浪波激泥  阅读(365)  评论(0编辑  收藏  举报