赞
踩
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
题意:给定一个十六进制的数,转化成十进制的数输出。
思路:用求得的已知数*16+每位上的值,是求十进制一种简单方法。不用从尾部开始求起。
注意:这里的数超过int,所有最后的十进制数要用long long int存储,long也会错误。
代码:
- #include <iostream>
- #include<string>
- using namespace std;
- int main(int argc, char** argv) {
- string s;
- long long int num = 0;//注意不能用int或者long存储,否则会错误。用long long int保存数值
- cin>>s;
- for(int i=0;i<s.size();i++){//已求的前面的数num*16+每位对应的数字,全部加起来即是十进制的数,不用从尾部开始
- if(s[i]>='0'&&s[i]<='9'){//要判断每位数是0-9还是A-F,转化位对应的数
- num = num*16+(s[i]-'0');
- }else if(s[i]>='A'&&s[i]<='F'){
- num = num*16+(s[i]-'A'+10);
- }
- }
- cout<<num<<endl;
- return 0;
- }
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。