- 论坛徽章:
- 0
|
TCP客户端从服务端接收到一段数据,recv到buff后打印值为:
char buff[] = { 0x30 0x31 0x77 0x62 0xa4 0x0 0x0 0x0 0x12 0x36 0x6f 0xd9 0x0 0x0 0x0 0x0 }
共计16个字节。
现有对应结构体:
struct data_t
{
unsigned int a;
unsigned int b;
long long c;
};
通过结构体强转buff里的数据:
struct data_t* data = (struct data_t*)buff;
结果:
printf("%d\n", data->b);
此时随机出现4种情况:
1. data->b = { 0xa4 0x00 0x00 0x00 } , 这是期望的结果
2. data->b = { 0xa4 0x31 0x77 0x62 }
3. data->b = { 0xa4 0x00 0x77 0x62 }
4. data->b = { 0xa4 0x00 0x00 0x62 }
注:
tcp客户端和服务端发送数据时均未做hton转换,结构体定义未有#pramga pack(1)定义
运行平台:
Linux (none) 2.6.24-rt1-hi3515v100 #15 Mon Nov 5 18:03:35 CST 2012 armv5tejl unknown
处理器:
Processor : ARM926EJ-S rev 5 (v5l) (小端)
求助!!! |
|