c语言写代码以字符形式逐个读入十六进制数的每一位。边读入边计算,将十六进制数转为10进制。假设数据不含小数。
时间: 2023-06-10 22:04:17 浏览: 183
可以通过读入字符,然后使用字符转换为数字的函数将每个字符转换为对应的十进制数,再根据位数将十六进制数转换为十进制数。下面给出一段示例代码:
```c
#include <stdio.h>
int hex_to_dec(char c) {
if (c >= '0' && c <= '9') {
return c - '0';
} else if (c >= 'A' && c <= 'F') {
return c - 'A' + 10;
} else if (c >= 'a' && c <= 'f') {
return c - 'a' + 10;
} else {
return -1;
}
}
int main() {
char c;
int num = 0;
while ((c = getchar()) != '\n') {
int digit = hex_to_dec(c);
if (digit == -1) {
printf("Invalid input: %c\n", c);
return 1;
}
num = num * 16 + digit;
}
printf("The decimal equivalent is: %d\n", num);
return 0;
}
```
在这个程序中,`hex_to_dec` 函数将一个十六进制数的字符表示转换为对应的十进制数。`main` 函数每次读入一个字符,将其转换为对应的十进制数,然后根据位数将十六进制数转换为十进制数。如果输入的字符不合法,程序将输出错误信息并退出。
阅读全文