问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
注意结果求和要用long long。
注意头文件。
#include <iostream>
#include<string>
#include<math.h>
using namespace std;
int main()
{ string yuan,hou;
hou="";
cin>>yuan;
for(int j=0;j<yuan.size();j++)
{ switch(shiliu[j])
{
case'0':er+="0000";break;
case'1':er+="0001";break;
case'2':er+="0010";break;
case'3':er+="0011";break;
case'4':er+="0100";break;
case'5':er+="0101";break;
case'6':er+="0110";break;
case'7':er+="0111";break;
case'8':er+="1000";break;
case'9':er+="1001";break;
case'A':er+="1010";break;
case'B':er+="1011";break;
case'C':er+="1100";break;
case'D':er+="1101";break;
case'E':er+="1110";break;
case'F':er+="1111";break;
}
}
long long sum=0;
int len=hou.size();
for( int k=0;k<len;k++)
{
sum=sum+(hou[k]-'0')*pow(2,len-k-1);
}
cout<<sum<<endl;
return 0;
}