请写一个C语言程序将一个16进制的数求原码,再转换为10进制
时间: 2024-11-15 15:23:06 浏览: 20
c语言编程题:从键盘输入一个十进制数,将其转换为二进制、八进制和十六进制数,并同时输出。
4星 · 用户满意度95%
在C语言中,我们可以创建一个函数来完成这个任务。首先,我们需要一个函数来接受16进制字符串,并将其转换为对应的ASCII表示,然后逐位处理得到原码,最后计算出10进制数值。这里是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
// Function to convert hex digit to its decimal value
int hex_to_decimal(char hex_digit) {
if (hex_digit >= '0' && hex_digit <= '9') {
return hex_digit - '0';
} else if (hex_digit >= 'A' && hex_digit <= 'F') {
return hex_digit - 'A' + 10;
} else if (hex_digit >= 'a' && hex_digit <= 'f') {
return hex_digit - 'a' + 10;
}
// Return -1 for invalid hexadecimal characters
return -1;
}
// Convert a hexadecimal string to its decimal equivalent
int hex_to_decimal_string(const char *hex_str) {
int decimal_value = 0;
int power = 0;
for (int i = strlen(hex_str) - 1; i >= 0; i--) {
int digit_val = hex_to_decimal(hex_str[i]);
if (digit_val == -1) {
printf("Invalid character in the hexadecimal number.\n");
return -1;
}
decimal_value += digit_val * pow(16, power);
power++;
}
return decimal_value;
}
int main() {
char hex_num[] = "1A"; // Input your 16-bit hexadecimal number here
int decimal_num = hex_to_decimal_string(hex_num);
if (decimal_num != -1) {
printf("The decimal equivalent of %s is: %d\n", hex_num, decimal_num);
}
return 0;
}
```
在这个程序中,`hex_to_decimal()` 函数用于将单个十六进制字符转换为十进制,而 `hex_to_decimal_string()` 函数则遍历输入的字符串,按位相加得到最终的十进制值。
阅读全文