不同类型的CPU对大于一个字节的变量的字节存储顺序可能不同:
有的系统是高位在前,低位在后;
而有的系统是低位在前,高位在后;
而网络传输的数据顺序是一定要统一的。所以当内部字节存储顺序和网络字节顺序不同时,就一定要进行转换。
如:32bit的整数(0x01234567)从地址0x100开始:
v小端字节序:
有的系统是高位在前,低位在后;
而有的系统是低位在前,高位在后;
而网络传输的数据顺序是一定要统一的。所以当内部字节存储顺序和网络字节顺序不同时,就一定要进行转换。
如:32bit的整数(0x01234567)从地址0x100开始:
v小端字节序:
v大端字节序:
判断字节序方法:
1.采用联合体:
union sem//联合体共享内存空间
{
unsigned short i;
char a;
};
i=0x1234; //若a=0x34,为小端模式,若a=0x12,为大端模式
2.强制转换:
short i=0x1234;
char a=i;
a=?