我想将下面的结构转换为char数组,以便通过串行端口发送它。使用memcpy将结构转换为char数组
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'在哪里,它的大小是多少 – Gopi
“尾随值”是什么意思?你如何检查数组的内容?你在编程C或C++吗?语义可能不同。在一个不相关的说明中,你有没有使用联盟? –
http://stackoverflow.com/questions/119123/why-isnt-sizeof-for-a-struct-equal-to-the-sum-of-sizeof-of-each-member – Lundin