位元組序之大小端及使用注意問題

2021-09-01 16:08:49 字數 647 閱讀 8270

大小端位元組序網上已經介紹很多,這裡只做大概介紹:

申請計算機記憶體及分配

輸出結果:

位元組序及高低位

位元組序的高低位就跟數字的高低位乙個道理,

比如:int  inum = 0x12345678;

則8是最低位, 1 是最高位

按小端序:inum在記憶體中的分布為:78 56 34 12  即最低位的78在記憶體中的低位址位

按大端序:inum在記憶體中的分布為:12 34 56 78  即最低位的78在記憶體中的高位址位

下面舉例說明開發中需要注意位元組序的大小端問題

下面做個簡單測試,連續申請8個位元組記憶體,記憶體是連續的,然後擷取最後四個位元組

並且列印出來,可以看到,正常資料:arr[4]-arr[7]依次為 45 46 47 48 ,但是當擷取最後連續四個位址資料時,列印出資料為:48 47 46 48,可以看出資料是反的。

輸出資料結果:

從上面測試可以看出乙個問題,值得我們注意:

如果擷取某一段資料,並且這一段資料儲存的基本型別位元組大小與擷取的型別大小不一致,則特別需要注意位元組序問題,在同一位元組序的計算機上,擷取的資料值並不正確。

大小端,位元組序問題

總結 1 80x86使用小端法,網路位元組序使用大端法。2 二進位制的網路程式設計中,傳送資料,最好以unsigned char,unsigned short,unsigned int 來處理,unsigned short unsigned short 以網路位元組序處理後再拷貝到傳送的buffer...

大小端位元組序問題

大端模式 big endian 資料的高位元組儲存在記憶體低位址中,而資料的低位元組則存放在記憶體高位址中。與思維習慣不一致,但與實際資料的表達方式一致。如powerpc的unix系統 小端模式 little endian 資料的高位元組儲存在記憶體高位址中,而資料的低位元組則存放在記憶體低位址中 ...

大小端 位元組序問題

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