问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
问题分析:
按照进制转化就行,需要注意最后结果必须要用long long 类型,不然会溢出。
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
char str[10];
scanf("%s",str);
int d = strlen(str);
long long sum = 0;
for(int i = 0; i < d; ++i)
{
long long x;
if(str[i] <= '9' && str[i] >= '0')
x = str[i]-'0';
else
x = str[i]-'A'+10;
sum += x*pow(16,d-i-1);
}
printf("%lld\n",sum);
return 0;
}