//struct
#pragma pack(2)
typedef struct link
{
int Start;
int Lenth;
unsigned char Target[17];
unsigned char Source[17];
int Message;
}exlink;
#pragma pack(pop)//赋值
link exlink;
exlink.Start = 0xFFFFFFFF;
exlink.Lenth = 2;
memcpy(exlink.Source,"great",strlen("great"));
memcpy(exlink.Target,"GREAT",strlen("GREAT"));
exlink.Message = 0x0a01;
//这种赋值是否正确么?断点的时候,exlink.Start值为-1,exlink.Message 为2561,都不是初始时赋的值,这是为什么?正常应该怎么赋值呢。
还有这接收方,这种结构体怎么解析还原数据呢?
求高手指点最后:这种“起始标识 4字节 0xFFFFFFFF”,应该怎样定义该数据类型呢,我定义的是否有误???
是直接sz = 0xFFFFFFFF;
说的是,确实我失误了,最后是进制转换的问题。 我是使用电脑上面的程序员计算器,在最下面除了进制选择外,还有个字字节选择,系统默认的是四字,但是开发工具上是以2字计算。除此之外,在赋值的时候
//赋值
link exlink;
memset(&exlink,0,sizeof(exlink));//添加清空结构体缓存
exlink.Start = 0xFFFFFFFF;
exlink.Lenth = 2;
memcpy(exlink.Source,"great",strlen("great"));
memcpy(exlink.Target,"GREAT",strlen("GREAT"));
exlink.Message = 0x0a01;
而Message在转为十六进制2561就是0xa01