十六进制转十进制
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
注:十六进制数中的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 }
浪波激泥