存放端存放buf时:
int a = 0x12345678;
char buf[4] = {0};
大端存放:buf[0] = 0x12 把高字节放在buf前面
小端存放:buf[0] = 0x78 把低字节放在buf前面
解析端解析buf时:
int x = *(int *)buf; 按照主机字节序解析 如果主机小端,buf也是小端存放则正确
memcpy((char *)&x,buf,4); 也是按照主机字节序解析 如果主机小端,buf也是小端存放则正确
解析协议时要知道收到的帧是大端存放还是小端存放再解析。
大部分主机是小端,例如:int c = 0x12345678; *(char *)&c[0] 为 0x78;
网络数据一般按照大端方式存放。