题解 | #进制转换#
进制转换
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; }