描述
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
数据范围:保证结果在 1≤n≤2 ^31-1
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。不同组的测试用例用\n隔开。
示例1
输入:
0xAA
输出:
170
实现
#include <stdio.h>
#include <string.h>
int main()
{
char ch;
int tmp, cnt = 1, len = 0;
char hexBuf[32 + 1] = {0};
unsigned int outVal = 0;
gets(&hexBuf);
len = strlen(hexBuf);
for (int i = len - 1; i > 1; i--) {
ch = hexBuf[i];
// printf("i: %d, ch: %c\n", i, ch);
if ((ch >= '0') && (ch <= '9')) {
tmp = ch - '0';
} else if ((ch >= 'A') && (ch <= 'F')) {
tmp = ch - 'A' + 10;
} else if ((ch >= 'a') && (ch <= 'f')) {
tmp = ch - 'a' + 10;
} else {
printf("invalid param, ch: %c\n", ch);
}
outVal += tmp * cnt;
// printf("tmp: %d, cnt: %d, outVal: %d\n", tmp, cnt, outVal);
cnt *= 16;
}
printf("%d\n", outVal);
return 0;
}