首先不管是大端法還是小端法儲存,計算機在記憶體中存放資料的順序都是從低位址到高位址,所不同的是首先取低位元組的資料存放在低位址還是取高位元組資料存放在低位址。
若首先取高位元組的資料存放在低位址,則是大端法;
若首先取低位元組的資料存放在低位址,則是小端法;
例如有資料0x01234567 (注意:左邊是高位元組,右邊是低位元組)
大端法存放:
對應的資料依次為:0x01 0x23 0x45 0x67
小端法存放:
對應的資料依次為:0x67 0x45 0x23 0x01
因為我們的思維習慣是從左到右的順序,所以大端法的儲存方式符號我們思維習慣,這因為這個原因,大端法也稱為網路編碼。ibm的370主機,多數基於risc計算機,和motorola的微處理器使用big endian方法。tcp/ip也使用big endian方法(big endian方法也叫做網路編碼)。因為我們的語言都是從左到右的習慣方式,所以我們希望儲存字元和數字也以同樣的方式出現。
資料 0x12345678 其中12是資料的高位位元組,78是資料的低位位元組;
記憶體位址 小端 大端
0x4000 0x78 0x12
0x4001 0x56 0x34
0x4002 0x34 0x56
0x4003 0x12 0x78
其實理解成高尾端和低尾端比較好;
大、小就是指開頭的的資料是高位還是低位;
大端可以理解成資料的高位在記憶體位址的開頭;
小端可以理解成資料的低位在記憶體位址的開頭;
由於網路協議中規定位元組序列都採用大端法;(網路位元組序列)
但是cpu中位元組序列由於廠商不同,有可能是大端法,也有可能是小端法;(主機位元組序列)
這就需要進行大小端的轉換;
ntohl()函式是將乙個無符號長整型數從網路位元組順序轉換為主機位元組順序,
同理:htonl()函式是將長整型數從主機位元組順序轉成網路位元組順序;
大端法還是小端法區別:
有關於主機位元組序和網路位元組序是大端位元組序還是小端位元組序的問題的**:
主機位元組序列和網路位元組序列:
移動端基礎概念
需要注意的是,css畫素與物理畫素的關係是靠瀏覽器廠商在維護,並不是裝置廠商 css畫素是瀏覽器中特有的概念 移動端瀏覽器通常寬度是 240px 640px,而大多數為 pc 端設計的 寬度至少為 800px,如果仍以瀏覽器視窗作為視口的話,內容在手機上看起來會非常窄。因此,引入了布局視口 視覺視口...
基礎 大小端位元組序
在幾乎所有機器上,多位元組物件都被儲存為連續的位元組序列,物件的位址為所使用位元組中最小的位址。例如,假設乙個型別為int的變數x位址為0x100,也就是說位址表示式 x的值為0x100。那麼,x的4個位元組將被儲存在儲存器的0x100 0x101 0x102和0x103的位置。那麼,如果這個變數的...
mysql 大小端 大小端定義
大小端的定義 big endian和little endian的定義如下 little endian就是低位位元組排放在記憶體的低位址端,高位位元組排放在記憶體的高位址端。big endian就是高位位元組排放在記憶體的低位址端,低位位元組排放在記憶體的高位址端。舉乙個例子,比如數字0x12 34 ...