Big-Endian和Little-Endian的定义如下:
1) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。2) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。不同字节序如何存储数据?
看看两种方式如何存储数据,假设从地址0x00000001处开始存储十六进制数0x12345678,那么
Bit-endian 如此存放(按原来顺序存储)
0x00000001 -- 120x00000002 -- 340x00000003 -- 560x00000004 -- 78Little-endian 如此存放(颠倒顺序储存)0x00000001 -- 780x00000002 -- 560x00000003 -- 340x00000004 -- 12一个很好的记忆方法是,大端序是按照数字的书写顺序进行存储的,而小端序是颠倒书写顺序进行存储的。
bool IsBigEndian()
{
int a =1 ;
if(((char*)&a)[3] ==1)
return true ;
else
return false ;
}
----------------------
bool IsBigEndian()
{
union
{
unsigned short a ;
char b ;
} c;
c.a =0x0102 ;
if(c.b ==1)
return true ;
else
return false ;
}