题解 | #进制转换#
进制转换
https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6
//相对简单的思路
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char arr[32] = "";
scanf("%s", arr);
int sz = strlen(arr), i = 0, num = 0, a = 0, sq = 1;
//从后往前一位一位计算相加
for (a = sz - 1; a >= 0; a--)
{
//从倒数第二位开始乘16的次方
if (a < sz - 1)
{
sq *= 16;
}
if ((arr[a] >= 'A')&&(arr[a] <= 'Z'))
{
i = arr[a]-'A'+10;
//也可以直接用num+=i*sq,此处为了和下面数字字符写法统一
num += (i % 16) * sq;
}
else if ((arr[a] >= '0') && (arr[a] <= '9'))
{
//可以尝试用atoi获取整型
i = arr[a]-'0';
num += (i % 10) * sq;
}
}
printf("%d\n", num);
return 0;
}
