基础练习 十六进制转十进制
题目
-
问题描述
-
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示
样例输入
- FFFF 样例输出
- 65535 时间限制:
- 1.0s 内存限制:
- 512.0MB
AC代码
#include <iostream>
#include<math.h>
using namespace std;
int main(int argc, char *argv[]) {
string str;
cin>>str;
int len=str.length();
long long num=0;
for(int i=len-1;i>=0;i--){
int t=0;
if(str[i]<=57){
t=str[i]-48;
}else{
t=str[i]-55;
}
num+=(t* (long long)pow(16,(double)(len-1-i)) );
}
cout<<num;
return 0;
}
AC代码修改版
无意间翻看发现又可以优化的地方,于是修改了一下
#include <iostream>
#include<math.h>
using namespace std;
int main(int argc, char *argv[]) {
string str;
cin>>str;
int len=str.length();
long long num=0;
for(int i=len-1;i>=0;i--){
int t=0;
t=str[i]-(str[i]<=57?48:55);
num+=(t* (long long)pow(16,(double)(len-1-i)) );
}
cout<<num;
return 0;
}