次の構造体をchar配列に変換して、シリアルポート経由で送信できるようにしようとしています。memcpyを使用して構造体をchar配列に変換する
char b[sizeof(struct foo)];
memcpy(b, &dvar, sizeof(struct foo));
しかし、私は私が最初にそれを考えたchar配列
0x0A 0xFF
でこれらの末尾の値を取得何らかの理由:私は、次を使用して、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" , '#'};
値を取得していたのは、文字配列にキャストしたときに効果的に文字列にキャストしていたので、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