STM32 C语言 串口接收HEX字符数组 ,转换为char数组 代码实现
时间: 2024-05-11 16:17:36 浏览: 10
可以使用以下代码实现:
```c
void hexToChar(uint8_t* hexArray, uint16_t hexArrayLen, char* charArray)
{
uint16_t i;
for (i = 0; i < hexArrayLen; i++) {
charArray[i] = (char)((hexArray[i] >> 4) & 0x0F);
if (charArray[i] > 9) {
charArray[i] += 'A' - 10;
}
else {
charArray[i] += '0';
}
}
}
```
此代码将一个HEX字符数组转换为一个char数组。HEX字符数组是由未经处理的HEX字节构成的,char数组是将HEX字节转换为对应字符所得到的结果。
注意:在使用本代码之前,应当确认输入HEX字符数组的长度正确,并确保输出char数组的长度足够。
相关问题
单片机C语言 串口接收HEX字符数组 ,转换为char数组 代码是咧
抱歉,我可以回答这个问题。以下是可以实现这一功能的C语言代码:
```c
#include <stdio.h>
int main() {
// 假设收到的16进制字符数组为 "48656C6C6F"
char hex_chars[] = "48656C6C6F";
// 将收到的每两个字符转换为16进制数值,存储到byte数组中
unsigned int num_chars = sizeof(hex_chars) - 1;
unsigned char bytes[num_chars / 2];
for (int i = 0; i < num_chars; i += 2) {
sscanf(hex_chars + i, "%02hhx", bytes + i / 2);
}
// 打印byte数组中的每个元素,以验证转换是否正确
for (int i = 0; i < sizeof(bytes); i++) {
printf("%c ", bytes[i]);
}
return 0;
}
```
该代码将接收到的16进制字符转换为byte数组,并打印每个字节的字符表示。要将字节数组转换为字符串,您可以使用`strncpy`函数。
C语言实现16进制数组转换为string
可以使用以下代码实现16进制数组转换为string:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int hex_arr[] = {0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x21};
int len = sizeof(hex_arr) / sizeof(hex_arr[0]);
char* str = (char*)malloc((len + 1) * sizeof(char));
str[len] = '\0';
for(int i = 0; i < len; i++) {
sprintf(&str[i], "%c", hex_arr[i]);
}
printf("%s", str);
free(str);
return 0;
}
```
其中,`hex_arr` 为16进制数组,`len` 表示数组长度,`str` 为转换得到的字符串。使用 `sprintf` 函数可以将每个16进制数转换为对应的字符,并将字符依次存储到 `str` 数组中。最后,使用 `printf` 函数输出转换得到的字符串,并释放 `str` 数组的内存空间。