Big-Endian和Little-Endian的定義以下:
1) Little-Endian就是低位字節排放在內存的低地址端,高位字節排放在內存的高地址端。
2) Big-Endian就是高位字節排放在內存的低地址端,低位字節排放在內存的高地址端。spa
看看兩種方式如何存儲數據,假設從地址0x00000001處開始存儲十六進制數0x12345678,那麼orm
Bit-endian 如此存放(按原來順序存儲)
0x00000001 -- 12
0x00000002 -- 34
0x00000003 -- 56
0x00000004 -- 78
Little-endian 如此存放(顛倒順序儲存)
0x00000001 -- 78
0x00000002 -- 56
0x00000003 -- 34
0x00000004 -- 12內存
一個很好的記憶方法是,大端序是按照數字的書寫順序進行存儲的,而小端序是顛倒書寫順序進行存儲的。it
bool IsBigEndian()io
{nio
int a =1 ; 方法
if(((char*)&a)[3] ==1)數據
return true ;margin
elsetop
return false ;
}
----------------------
bool IsBigEndian()
{
union
{
unsigned short a ;
char b ;
} c;
c.a =0x0102 ;
if(c.b ==1)
return true ;
else
return false ;
}