在實際軟體除錯時,會做資料型別的轉換,比如強制型別轉換,將int ---> short , unsigned --> signed ,以及不同的平台做開發時,
比如linux ,window, arm,不同平台的資料儲存機制是不一樣的。
關於大小端的基本概念如下:
舉個例子,從記憶體位址0x0000開始有以下資料
0x0000 0x12
0x0001 0x34
0x0002 0xab
0x0003 0xcd
如果我們去讀取乙個位址為0x0000的四個位元組變數:
若位元組序為big-endian, 則讀出結果為0x1234abcd;
若位元組序位little-endian,則讀出結果為0xcdab3412;
如果我們將0x1234abcd寫入到以0x0000開始的記憶體中,則結果為:
big-endian little-endian
0x0000 0x12 0xcd
0x0001 0x23 0xab
0x0002 0xab 0x34
0x0003 0xcd 0x12
intelx86系列以及arm系列cpu都是little-endian的位元組序.
記憶體儲存大小端介紹
為什麼會有大小端模式之分呢?這是因為在計算機系統中,我們是以位元組為單位的,每個位址單元對應著乙個位元組,乙個位元組8bit 但是在c語言中除了8bit的char之外,還有16bit的short型,32bit的long型 要看具體的編譯器 另外,對於位數大於8位的處理器,例如16位或者32位的處理器...
儲存大小端問題
所謂的大端模式,是指資料的低位 就是權值較小的後面那幾位 儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理 位址由小向大增加,而資料從高位往低位放 所謂的小端模式,是指資料的低位儲存在記憶體的低位址中,而數 據的高位儲存在記憶體的高位址中...
大小端儲存問題
所謂的大端模式,是指資料的低位 就是權值較小的後面那幾位 儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理 位址由小向大增加,而資料從高位往低位放 所謂的小端模式,是指資料的低位儲存在記憶體的低位址中,而數 據的高位儲存在記憶體的高位址中...