C语言16进制数转10进制字符串
时间: 2023-07-25 11:06:10 浏览: 95
可以使用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进制数组转字符串
以下是C语言将16进制数组转换为字符串的方法:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
unsigned char Hex[4] = {0xc1,0x12,0xe4,0x58};
char str[10];
int i;
for(i=0; i<4; i++)
{
sprintf(str+i*3, "%02x ", Hex[i]); // 将16进制数转换为2位的字符串,并在后面加上空格
}
str[9] = '\0'; // 字符串最后一位加上'\0',表示字符串结束
printf("%s\n", str); // 输出字符串
return 0;
}
```
输出结果为:
```
c1 12 e4 58
```
阅读全文