我正在尝试将以下结构体转换为字符数组,以便通过串口发送。
struct foo
{
uint16_t voltage;
char ID ;
char TempByte;
char RTCday[2];
char RTCmonth[2];
char RTCyear[2];
char RTChour[2];
char RTCmin[2];
char Sepbyte;
}dvar = { 500, 'X' , '>' , "18" , "10" , "15" , "20" , "15" , '#'};
我随后使用以下方法将其转换为字符数组:
char b[sizeof(struct foo)];
memcpy(b, &dvar, sizeof(struct foo));
然而出于某些原因,我在字符数组中得到了这些尾随值。
0x0A 0xFF
我最初以为获取了值,因为当我将其转换为char数组时,它实际上是将其转换为字符串,所以我认为这是NULL'\ 0'
任何帮助都将不胜感激。
谢谢
datadownload
结构体在哪里,以及它的大小是多少。 - Gopichar
数组,没有人会为你添加 NULL 终止符。你需要自己添加。 - fuzmemcpy
是无用的,因为类型转换是通过将&dvar
作为void *
类型的参数传递来实现的。这也可以工作:char *b = &dvar;
或者更好的写法是char *b = (char *)&dvar;
。 - Melebius