大端與小端

2021-05-24 09:45:59 字數 628 閱讀 1770

網際網路使用網路位元組順序採用大端模式進行編址,大端儲存也稱為網路位元組序,因為tcp/ip包在網路中傳輸時都要求以這種次序,以其他形式儲存資料的機器(主機位元組順序根據處理器的不同而不同,如powerpc處理器,使用大端模式,而pentuim處理器使用小端模式),則必須在傳送資料之前把首部轉換成網路位元組序。

網路位元組順序到主機位元組順序的轉換(需要大小位元組轉換時):

#define ntoh16(x)  ((((x)&0x00ff)<<8)|((x)&0xff00)>>8))

#define ntoh16(x)  ((x)=((uint16)(ntoh16(x))))

#define ntoh32(x)  ((((x)&0x000000ff)<<24)|/

(((x)&0x0000ff00)<<8)|/

(((x)&0x00ff0000)>>8)|/

(((x)&0xff000000)>>24)))

#define ntoh32(x)   ((x)=((uint32)(ntoh32(x))))

#define ntoh64(x)   ((x)=((uint64)(((ntoh32((x)&0xffffffff))<<32)|/

(ntoh32(((x)>>32)&0xffffffff)))))

大端與小端

端模式 endian 的這個詞出自 jonathan swift 書寫的 格列佛遊記 這本書根據將雞蛋敲開的方法不同將所有的人分為兩類,從圓頭開始將雞蛋敲開的人被歸為 big endian 從尖頭開始將雞蛋敲開的人被歸為 littile endian 小人國的內戰就源於吃雞蛋時是究竟從大頭 big ...

大端與小端

大端表示跟小端表示這兩者的具體意義我老是記不住,當然不是說它的意思不懂,而只是容易搞混。現在記一下,以後就比較有印象了。在c 中,定義乙個int值的時候,它所占用的記憶體是4個位元組,然而這4個位元組裡面,我們如果得到這個int值的記憶體位址,其實就是它的最低位置的位址,如 int a 假設 a的記...

大端與小端

用例 include bool isbigend bool isbigending obj obj.a 0x1234 if obj.b 0x12 return true else return false int main 分析 union 是利用了它的性質 所有成員從低位址開始存放 小端 0x00...