如何在C中将uint16_t转换为char数组?


How to convert uint16_t into char array in c?

本问题已经有最佳答案,请猛点这里访问。

有以下数据

1
uint16_t a[1] = { 0x1111 };

我想转换为char b[]为:

1
char b[1] = { 0x1111 };

如何在C程序中执行此操作?


首先:char b[1]的大小不足以容纳uint16_t a[1]的两个字节。

如果要分配副本,则memcpy是一种方法:

1
2
char b[sizeof(a)];
memcpy(b, a, sizeof(a));

如果您想将其别名为char类型,则可以强制转换指针:

1
char * b = (char *)a;


0x1111大于字符(类型为char ...即:uint8_t)可以接受的最大值...因此可能需要一个包含两个的数组,例如:char b[2] = { 0x11, 0x11 };