大端模式和小端模式(大頭序和小頭序)

2022-03-30 06:04:33 字數 1890 閱讀 6768

大端:多位元組值的大端儲存在該值的起始位置;(老大站排頭為大)

小端:多位元組值的小端儲存在該值的起始位置;(老小站排頭為小)

例如16bit整數:0x0102,其中01即為多位元組值的大端,02即為多位元組值的小端。

在網路中傳輸的都是大端序,但具體到某台主機cpu的實現,則有可能是大端序也可能是小端序。一般x86是小端。

那麼,如何通過程式來判斷當前主機到底是大端還是小端呢?

01

/*判斷大端還是小端, 1:小端  0:大端*/

02

intgetendian()

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

print

?01

/*判斷大端還是小端, 1:小端  0:大端*/

02

intgetendian()

03

un;

09

10

un.s = 0x0102;

11

12

if(2 ==sizeof(short))

13

19

elseif(2 == un.c[0] && 1 == un.c[1])

20

24

else

25

28

}

29

else

30

33

34

return0;

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位的處理器,由於暫存器寬度大於乙個位元組,那麼必然 存在著如何將多個位元組安排的問題。因此就導致了大端儲存模式和小端儲存模式。大端模...