網路程式設計 大端模式和小端模式

2021-06-19 12:37:44 字數 821 閱讀 1264

這本來是很easy的東東,不過今天看到一段判斷主機是大端模式還是小端模式的例子,和以前的常見的例子略有不同,更嚴密一些,故note一下:

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

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

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

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

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

常見方法:

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

int getendian()

s; s.a = 0x0001;

return (1 == s.b);

}

聯合體union的存放順序是所有成員都從低位址開始存放,給s.a賦值為0x01,00為a的高階,01為a的低端,如果b==1,即a的低端位於起始位置,即小端,反之為大端。

《unix網路程式設計》(第一卷)給的方法:

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

int getendian()

un; un.s = 0x0102;

if(2 == sizeof(short))

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

else

}else

return 0;

}

【**:

小端模式和大端模式 大端模式和小端模式

0x123456在記憶體中的儲存方式 大端模式 低位址 小端模式 低位址 不難看出大端模式比較符合人的直觀認識 1.一開始是由於不同架構的cpu處理多個位元組資料的順序不一樣,比如x86的是小段模式,keil c51是大端模式。但是後來網際網路流行,tcp ip協議規定為大端模式,為了跨平台通訊,還...

大端模式和小端模式

大端模式和小端模式 在c語言中除了8位的char型之外,還有16 位的short型,32 位的long型 要看具體的編譯器 對於位數大於8位的處理器,例如16位或者32位的處理器,由於暫存器寬度大於乙個位元組,那麼必然 存在著如何將多個位元組安排的問題。因此就導致了大端儲存模式和小端儲存模式。大端模...

大端模式和小端模式

所謂的大端模式,是指資料的低位 就是權值較小的後面那幾位 儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理 位址由小向大增加,而資料從高位往低位放 所謂的小端模式,是指資料的低位儲存在記憶體的低位址中,而數 據的高位儲存在記憶體的高位址中...