题解 | #进制转换#
进制转换
http://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6
概述一下
复习一下进制转换思路。c++可直接使用格式化输入输出。
原理
0xabcd = a16^3 + b16^2 +c16^1 +d16^0
code
#include <stdio.h> #include <math.h> int main() { //1. 输入处理 char num[100]; while (scanf("%s",num) != EOF) { //2. 进制转换 int sum=0; int len = 0; while (num[len] != '\0') { len++; } for (int i = len-1,j=0 ; i>=2 && j<len-2; i--,j++) { //不包含开头0x int digit=0; if (num[i] >='A' && num[i] <='F') { digit = num[i] - 'A' +10; } else if (num[i] >='a' && num[i] <='f') { digit = num[i] -'a' +10; } else { digit = num[i]-'0'; } sum += pow(16,j)*digit; } //3. 输出处理 printf("%d\n",sum); } return 0; }