1定义结构体
struct Double { ? ? ? ? double a; ? ? ? ? double b; };
int main() {
? ? ? ? unsigned char buf[]={0xf5,0xdd,0xd8,0xac,0x2d,0xf4,0x3e,0x40,0xf5,0xdd,0xd8,0xac,0x2d,0xf4,0x3e,0x40}; ? ? ? ? Double value; ? ? ? ? memcpy(&value,(Double*)buf,16); ? ? ? ? printf("value a %g\n",value.a); ? ? ? ? printf("value b %g\n",value.b); ? ? ? ? double* reslut = (double*)buf; ? ? ? ? printf("reslut :%g\n",(*reslut)); ? ? ? ? return 0; }
终端打印
value a 30.9538 value b 30.9538 reslut :30.9538
其中unsigned char buf 模拟报文二进制字节流,在字符数组中表现为16进制数据
其中字符数组是16个字节,结构体中有2个double类型,所以也是16字节。
然后利用内存字节对其方法,将字符串数组memcpy到结构体内存中。
每8个字节对应一个double成员,16字节对应2个double成员。
所以终端打印两个成员的数据是两个30.9538
|