题解 | #进制转换#
进制转换
http://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6
解题思路:
- 判断s这个字符串每个位置上的值
- 如果这个值是A-F用另外一个int 数组来保存对应的数字
- 0X 代表是十六进制的数字,所以数组下标从2开始
- 由于16进制最后一位是0次方,所以pow函数是pow(16,s.leng()-i-1)
- 由于在字符串中的数字取出来是字符型,所以要进行对应的转化,在1-9之间之间减去第'0'个字符就得到了对应的整数
-
#include <bits/stdc++.h> using namespace std; int temp[10005]; int main(){ string s; cin>>s; int num=0; char m; for(int i=2;i<s.length();i++){ if(s[i]=='A'){ temp[i]=10; num+=temp[i]*pow(16,s.length()-i-1); } else if(s[i]=='B'){ temp[i]=11; num+=temp[i]*pow(16,s.length()-i-1); } else if(s[i]=='C'){ temp[i]=12; num+=temp[i]*pow(16,s.length()-i-1); } else if(s[i]=='D'){ temp[i]=13; num+=temp[i]*pow(16,s.length()-i-1); } else if(s[i]=='E'){ temp[i]=14; num+=temp[i]*pow(16,s.length()-i-1); } else if(s[i]=='F'){ temp[i]=15; num+=temp[i]*pow(16,s.length()-i-1); }else if(s[i]>'0'&&s[i]<='9') { s[i]=s[i]-'0'; num+=s[i]*pow(16,s.length()-i-1); } } cout<<num; return 0; }