题解 | #进制转换#
进制转换
https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6
#include <iostream>
#include "math.h"
using namespace std;
int main() {
int num10 = 0;
string numb16;
while(cin >> numb16)
{
string purenumber = numb16.substr(2,numb16.size()-2);
char *a = purenumber.data();
for(int i = purenumber.length()-1;i >= 0;i--)
{
if(purenumber[i]>='0'&&purenumber[i]<='9')
{
num10 += (purenumber[i]-'0')*pow(16,purenumber.length()-i-1);
}
else if(purenumber[i]>='A'&&purenumber[i]<='F')
{
num10 += (purenumber[i]-'A'+10)*pow(16,purenumber.length()-i-1);
}
}
cout << num10<<endl;
}
}
// 64 位输出请用 printf("%lld")
知识点1:可以用string[]来访问string的内容。
知识点2:将char类型转换为in t 'char'-'0'
知识点3:'char'-'A'+10类似的用法
4:string.length();
5:对string str[0],是string最左边的字母