c语言16进制数组转字符串的代码
时间: 2023-10-17 14:12:43 浏览: 43
下面是一个将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。
- 最后释放内存。