【发布时间】:2014-11-03 19:58:48
【问题描述】:
我有两个对象,Header 和 DF。 让我们说
header = CCCCCC7E
和
DF = 01020304,
缓冲区的值不应该是CCCCCC7E01020304吗?
由于某种原因,当我打印它时,我得到了:
7EFFFFFFCCFFFFFFCCFFFFFFCCFFFFFFCCFFFFFFCCFFFFFFCCFFFFFFCCFFFFFFCCFFFFFFCC00FFFF
FFCC00000000000004030201FFFFFF8967341200000000
我是这样打印的:
for (int i = 0; i < sizeof(buffer); i++)
{ printf("%02X", buffer[i]); }
这是代码:
struct Header header;
struct Data_Format DF;
unsigned char buffer[TOTAL_SIZE];
header.Start = 0x7E;
header.Options = 0x00;
header.PacketLength = 0x00;
header.VCP = 0x00;
header.Reserved = 0x00;
header.Return = 0x00;
DF.Address = 0x01020304; //real value: NULL
DF.Result = 0x1234; //real value: NULL
DF.Size = 0x6789; //real value: NULL
memcpy(buffer,&header, sizeof(Header));
memcpy(buffer+sizeof(Header), &DF, sizeof(Data_Format));
【问题讨论】:
-
向我们展示声明和填充
buffer的代码 -
部分代码没有给出关于最终输出的任何想法。
-
您的问题中代码或信息不足,建议阅读the Stack Overflow question checklist。您可能还想了解如何创建Minimal, Complete, and Verifiable example。
-
A
struct可能包含填充字节(垃圾),memcpying 和打印垃圾似乎不是一个好主意,而是复制struct的成员 -
显示您如何在
struct Header和struct Data_Format中声明字段类型,您可能有签名问题