赞
踩
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
注:sum的范围需要很大,故写成long long int
- #include<bits/stdc++.h>
- using namespace std;
-
- int main(){
- long long int i, len, x, sum=0;
- char str[10];
- gets(str);
- len=strlen(str);
- for(i=0;i<len;i++){
- if(str[i]=='A'){
- x=10;
- }
- else if(str[i]=='B'){
- x=11;
- }
- else if(str[i]=='C'){
- x=12;
- }
- else if(str[i]=='D'){
- x=13;
- }
- else if(str[i]=='E'){
- x=14;
- }
- else if(str[i]=='F'){
- x=15;
- }
- else{
- x=str[i]-48;//因为0的ASCLL码为48
- }
- //cout<<x<<endl;
- sum+=x*pow(16, len-i-1);
- }
- //cout<<len<<endl;
- cout<<sum;
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。