C语言16进制数转10进制字符串
时间: 2023-07-25 21:06:10 浏览: 96
可以使用C语言中的sprintf函数将16进制数转换为10进制字符串,示例代码如下:
```c
#include <stdio.h>
int main() {
int hex_num = 0x12A; // 16进制数
char dec_str[50]; // 存储转换后的字符串
sprintf(dec_str, "%d", hex_num); // 将16进制数转换为10进制字符串
printf("%s\n", dec_str); // 输出转换结果
return 0;
}
```
输出结果为:
```
298
```
相关问题
c语言 16进制数转换成10进制数
在C语言中,将16进制数转换为10进制数可以使用内建函数`atoi()`或者手动通过循环逐位相加的方式来实现。以下是两种方法:
**使用 atoi() 函数:**
```c
#include <stdio.h>
#include <string.h>
int main() {
char hex_string[50]; // 假设输入的16进制字符串不超过48字符(因为A对应10)
printf("Enter a hexadecimal number: ");
fgets(hex_string, sizeof(hex_string), stdin);
// 去掉换行符
hex_string[strlen(hex_string) - 1] = '\0';
int decimal_value = atoi(hex_string);
printf("Decimal value: %d\n", decimal_value);
return 0;
}
```
**手动转换:**
```c
#include <stdio.h>
#include <math.h>
void hex_to_decimal(char hex[], int base, int *decimal) {
long result = 0;
int i = 0;
while (hex[i]) {
if (hex[i] >= '0' && hex[i] <= '9') {
result *= base;
result += hex[i] - '0';
} else if (hex[i] >= 'a' && hex[i] <= 'f') {
result *= base;
result += hex[i] - 'a' + 10; // A-F相当于10-15
} else if (hex[i] >= 'A' && hex[i] <= 'F') {
result *= base;
result += hex[i] - 'A' + 10; // A-F相当于10-15
}
i++;
}
*decimal = result;
}
int main() {
char hex_string[] = "FF"; // 示例16进制数
int decimal_result;
hex_to_decimal(hex_string, 16, &decimal_result);
printf("Decimal value: %d\n", decimal_result);
return 0;
}
```
在这个例子中,我们处理了小写字母和大写字母的情况。
c语言16进制字符串转10进制
在C语言中,将十六进制字符串转换成十进制整数通常需要手动处理每一位,并利用`strtol()`函数或`atoi()`函数配合一些额外的步骤。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
long int hex_to_decimal(const char *hex_string) {
long int decimal = 0;
int i = 0;
while (hex_string[i]) {
if (hex_string[i] >= '0' && hex_string[i] <= '9') {
decimal = decimal * 16 + hex_string[i] - '0';
} else if (hex_string[i] >= 'a' && hex_string[i] <= 'f') {
decimal = decimal * 16 + hex_string[i] - 'a' + 10;
} else if (hex_string[i] >= 'A' && hex_string[i] <= 'F') {
decimal = decimal * 16 + hex_string[i] - 'A' + 10;
}
i++;
}
return decimal;
}
int main() {
const char* hex_str = "ff"; // 示例十六进制字符串
long int decimal_num = hex_to_decimal(hex_str);
printf("Hexadecimal %s is equal to decimal number %ld.\n", hex_str, decimal_num);
return 0;
}
```
在这个例子中,我们遍历字符串的每个字符,将其转换成相应的十进制数值并累加到结果上。注意,这个函数假设输入的字符串只包含有效的十六进制数字。
阅读全文