大端:多位元組值的大端儲存在該值的起始位置;(老大站排頭為大)
小端:多位元組值的小端儲存在該值的起始位置;(老小站排頭為小)
例如16bit整數:0x0102,其中01即為多位元組值的大端,02即為多位元組值的小端。
在網路中傳輸的都是大端序,但具體到某台主機cpu的實現,則有可能是大端序也可能是小端序。一般x86是小端。
那麼,如何通過程式來判斷當前主機到底是大端還是小端呢?
01
/*判斷大端還是小端, 1:小端 0:大端*/
02
int
getendian()
03
s;
09
s.a = 0x0001;
10
return
(1 == s.b);
11
}
聯合體union的存放順序是所有成員都從低位址開始存放,給s.a賦值為0x01,00為a的高階,01為a的低端,如果b==1,即a的低端位於起始位置,即小端,反之為大端。
我覺得《unix網路程式設計》(第一卷)給的例子更嚴密一些:
view source
?01
/*判斷大端還是小端, 1:小端 0:大端*/
02
int
getendian()
03
un;
09
10
un.s = 0x0102;
11
12
if
(2 ==
sizeof
(
short
))
13
19
else
if
(2 == un.c[0] && 1 == un.c[1])
20
24
else
25
28
}
29
else
30
33
34
return
0;
35
}
小端模式和大端模式 大端序和小端序
例如,將12345678h寫入1000h開始的記憶體中,以大端序和小端序模式存放結果如下 一般來說,x86系列cpu都是little endian位元組序,powerpc通常是big endian位元組序。因為網路協議也都是採用big endian方式傳輸資料的,所以有時也把big endian方式...
小端模式和大端模式 大端模式和小端模式
0x123456在記憶體中的儲存方式 大端模式 低位址 小端模式 低位址 不難看出大端模式比較符合人的直觀認識 1.一開始是由於不同架構的cpu處理多個位元組資料的順序不一樣,比如x86的是小段模式,keil c51是大端模式。但是後來網際網路流行,tcp ip協議規定為大端模式,為了跨平台通訊,還...
大端模式和小端模式
大端模式和小端模式 在c語言中除了8位的char型之外,還有16 位的short型,32 位的long型 要看具體的編譯器 對於位數大於8位的處理器,例如16位或者32位的處理器,由於暫存器寬度大於乙個位元組,那麼必然 存在著如何將多個位元組安排的問題。因此就導致了大端儲存模式和小端儲存模式。大端模...