位元組序問題 Endianness

2021-07-09 02:33:49 字數 703 閱讀 9553

特別強調:只有多位元組物件才會有多位元組問題,單位元組物件是不存在這個問題的多位元組物件:比如int( 一般為4個位元組),float,short(一般兩個位元組)等

多位元組物件就不同了,因為他有多個位元組,然後順序的問題就出現了,就像排列組合一樣,多個元素排列方法多種多樣(位元組序只用到兩種特殊的排列方式),但是只有乙個元素時就只有一種排法了。

這裡拿int(4個位元組)來舉例因為他有四個位元組,當然一般來說肯定是4個連續的位元組,這裡假設首位址為0x100.有乙個int型值 0x12345678

大端序:大位數在前

0x100

0x101

0x102

0x103

1234

5678

小端序:小位數在前

0x100

0x101

0x102

0x103

7856

3412

需要注意的是,不管是大端序還是小端序,單位元組內的順序都是一樣的,比如小位的78不管排在**,都還是78,並不會變成87。大端序、小端序特指位元組的順序,這不廢話麼,說的就是位元組序啊。。

有時候時間長了又忘了那個是大端哪個是小端,按照大位數在前為大端也容易弄混淆(不知道是不是因為我太笨,反正就是經常混淆)。想到了乙個比較好的方式。不知道有沒有效呢,就是網路序(大端序)和人類的習慣是一樣的,大位數在前。小端序(intel為代表)和人類習慣是相反的,***的。。

參考:

位元組序(Endianness) 大端和小端

寫在前面 位元組序,也就是位元組的順序,指的是多位元組的資料在記憶體中的存放順序 在記憶體中,資料是以位元組 8bit 儲存的,當儲存 16bit或者 32bit時,就面臨著大端 big endian 儲存,還是小端 little endian 儲存的問題。先來講乙個故事 從前,有乙個國王的兒子,在...

位元組序相關問題

計算機系統一般採用位元組 octet,8 bit 作為邏輯定址單位。當物理單位的長度大於1個位元組時,就要區分位元組順序。常見的位元組順序有兩種 大端big endian 和 小端 little endian。大端序 高位位元組放到記憶體的低位址端,低位位元組排放在記憶體的高位址段 判斷大端小段 c...

關於位元組序問題

位元組序分為主機位元組序和網路位元組序。主機位元組序主要分為兩種 大端位元組序 big endian 和小端位元組序 little endian 不同的處理器架構,有不同的位元組序。執行在同一臺計算機上的程序相互通訊時,一般不用考慮位元組序問題。位元組序是乙個處理器架構特性,用於指示像整數這樣的大資...