使用C语言将多个u16,u32类型的数据先转换成16进制,然后将他们拼接成一个字符串
时间: 2024-02-17 22:05:29 浏览: 24
可以使用sprintf函数将多个u16,u32类型的数据转换成16进制字符串并拼接在一起。具体的实现方式如下:
```c
#include <stdio.h>
#include <stdint.h>
int main() {
uint16_t u16_val = 0x1234;
uint32_t u32_val = 0x56789ABC;
char hex_str[20]; // 存放转换后的16进制字符串
// 将u16_val和u32_val转换成16进制字符串
sprintf(hex_str, "%04X%08X", u16_val, u32_val);
printf("Hex string: %s\n", hex_str);
return 0;
}
```
上述代码中,sprintf函数的第一个参数为格式化字符串,其中%04X表示将u16_val转换成4位16进制数,不足位数补0;%08X表示将u32_val转换成8位16进制数,不足位数补0。最终将两个转换后的字符串拼接在一起,得到一个长度为12的16进制字符串。
相关问题
C语言将16进制GB2312编码字符串转换成汉字,写一个函数,STM32也能用,带测试代码
好的,这个问题我可以回答。以下是一个可以将16进制GB2312编码字符串转换成汉字的函数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void hex2gbk(char *hex, char *gbk) {
int len = strlen(hex);
int i;
char *p = hex;
char *q = gbk;
for (i = 0; i < len; i += 2) {
sscanf(p, "%2x", q);
p += 2;
q++;
}
*q = '\0';
}
int main() {
char hex[] = "B2E2D4F8B1EA";
char gbk[10];
hex2gbk(hex, gbk);
printf("%s\n", gbk);
return 0;
}
```
这个函数接受两个参数,第一个参数是16进制GB2312编码字符串,第二个参数是转换后的汉字字符串。函数内部使用了sscanf函数将每两个字符转换成一个字节,然后将字节拼接成汉字字符串。这个函数可以在STM32上使用,只需要将printf函数替换成STM32的输出函数即可。
C语言将一串字符串拼接为16进制数组
以下是将字符串拼接为16进制数组的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char str[] = "Hello, world!";
int len = strlen(str);
unsigned char* hex = (unsigned char*)malloc(len * 2 * sizeof(unsigned char));
for (int i = 0; i < len; i++) {
sprintf((char*)(hex + (i * 2)), "%02X", str[i]);
}
for (int i = 0; i < len * 2; i++) {
printf("%c ", *(hex + i));
}
free(hex);
return 0;
}
```
上述代码中,我们首先定义了一个字符串 `str`,然后计算字符串长度并分配了一个大小为 `len * 2` 的 unsigned char 数组 `hex`,用于存储16进制结果。然后,我们使用 `sprintf` 函数将字符转换为16进制形式,并将结果存储在 `hex` 数组中。最后,我们遍历 `hex` 数组并打印出其内容。
注意,此代码示例假设输入的字符串中没有空字符,如果有空字符,则需要相应地调整代码。