当前位置: 技术问答>linux和unix
请教字节序问题,分析了一个例子,但是不得要领。
来源: 互联网 发布时间:2016-06-01
本文导语: 以0x1234为例,在大端序的内存中存放顺序为地址0x4000存放0x12,0x4001存放0x34.若发送到网络另一端小端序中,存放的顺序仍是地址0x4000存放0x12,0x4001存放0x34;还是相反? 疑惑:小端序虽然存储多字节数据的位置...
以0x1234为例,在大端序的内存中存放顺序为地址0x4000存放0x12,0x4001存放0x34.若发送到网络另一端小端序中,存放的顺序仍是地址0x4000存放0x12,0x4001存放0x34;还是相反?
疑惑:小端序虽然存储多字节数据的位置与大端序相反,但是它取该多字节数据的顺序也是相反吧,那不是刚好正确了吗,还要字节序转换干嘛?
疑惑:小端序虽然存储多字节数据的位置与大端序相反,但是它取该多字节数据的顺序也是相反吧,那不是刚好正确了吗,还要字节序转换干嘛?
|
我很费解,你测试字节序,非得扯上网络干嘛,网络需要的是屏蔽字节序的差异。
你要测试这个:服务器端为C++平台(小端序),
那就在这台机写个代码。
short a=0x1234;
char *c;
c=(char *)&a;
printf("c[0]:%xn"",c[0]);
printf("c[1]:%xn"",c[1]);
你还有疑问不?字节序是针对数据类型,而数据在网络上是一个个字节,或者说是数据流,二者无关的啊。
|
很可能你误解了。
你说的这个是一个16位的数据,认为是short吧。
你如果保证小端正确的重组了数据,用1个16位的short数据接收了,则存储的方式跟大段肯定不一样。
但是如果你存的只是char数组,那我想你误解字节序的意思了。
字节序是说一种数据类型,它的高,低位在内存中分布序不一样。
具体你可以google。
你说的这个是一个16位的数据,认为是short吧。
你如果保证小端正确的重组了数据,用1个16位的short数据接收了,则存储的方式跟大段肯定不一样。
但是如果你存的只是char数组,那我想你误解字节序的意思了。
字节序是说一种数据类型,它的高,低位在内存中分布序不一样。
具体你可以google。