C语言16进制数转10进制字符串
时间: 2023-07-25 15:06:10 浏览: 52
可以使用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进制数组转字符串
以下是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
```
c语言16进制数组转字符串的代码
下面是一个将16进制数组转换为字符串的C语言代码示例:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
unsigned char hex_array[] = {0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64}; // 16进制数组
int array_len = sizeof(hex_array) / sizeof(unsigned char); // 数组长度
char* str = (char*) malloc(array_len * 2 + 1); // 申请字符串内存(每个16进制数需要2个字符,最后一个字符为'\0')
memset(str, 0, array_len * 2 + 1); // 初始化为0
for (int i = 0; i < array_len; i++) {
sprintf(str + i * 2, "%02x", hex_array[i]); // 将每个16进制数转换为2个字符的字符串
}
printf("16进制数组转换为字符串: %s\n", str);
free(str); // 释放内存
return 0;
}
```
输出结果为:Hello World
解释一下代码:
- `hex_array` 是一个16进制数组,需要转换为字符串。
- `array_len` 是数组的长度。
- `str` 是一个申请的字符串内存,每个16进制数需要2个字符,最后一个字符为`\0`。
- `memset` 用于初始化字符串为0。
- `sprintf` 将每个16进制数转换为2个字符的字符串,`%02x` 表示输出2位16进制数,不足2位前面补0。
- 最后释放内存。