题解 | #进制转换#
进制转换
https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6
// 思路:从第二位依次提取字符的每一位转化为十进制数
// 再分别与16相乘,相乘的次数取决于位数
#include <stdio.h>
#include <string.h>
// 提取字符转换为十进制
int Changenum(char a)
{
int b = 0;
if (a >= 'a' && a <= 'f')
{
b = a - 'a' + 10;
}
else if (a >= 'A' && a <= 'F')
{
b = a - 'A' + 10;
}
else if (a >= '0' && a <= '9')
{
b = a - '0';
}
return b;
}
int main() {
char str[10] = { 0 };// 0<n<2^31-1
gets(str);
int sum = 0;
int len = strlen(str);
for (int i = 2; i < len; i++)
{
int s=Changenum(str[i]);
//s=16*s 循环 len -i-1 次
for (int j = len - i; j > 1; j--)
{
s = 16 * s;
}
sum = sum + s;
}
printf("%d\n", sum);
return 0;
}
