計算機中,通常是以位元組為基本儲存單元,比如資料型別char占用大小為1byte,int為4byte,這個時候4個位元組的存放順序就是大小端問題。
0x12345678
(資料位數從左至右依次降低)的小端位元組序為 [
0x78
,0x56
,0x34
,0x12
](位址從左至右依次公升高)
強制轉換資料不需要調整位元組內容
強制轉換資料
整型 0x12345678
[0x78
,0x56
,0x34
,0x12
]強制轉換成
char型 0x78
[0x78
]不需要調整位元組內容
0x12345678
(資料位數從左至右依次降低)的打端位元組序為 [
0x12
,0x34
,0x56
,0x78
](位址從左至右依次公升高)
符號位的判定固定為第一位元組,容易判斷正負
強制轉換資料
整型 0x12345678
[0x78
,0x56
,0x34
,0x12
]強制轉換成
char型 0x78
[0x78
]要把高位址的位元組放到低位址,需要調整位元組內容
#include
"stdafx.h"
#include
#include
union node
;int
main()
#輸出0x78說明資料低位儲存在低位址,是小端模式
#輸出0x12說明資料高位儲存在低位址,是大端模式
#include
"stdafx.h"
#include
#include
intmain()
#輸出0x78說明資料低位儲存在低位址,是小端模式
#輸出0x12說明資料高位儲存在低位址,是大端模式
大小端問題
對於位數大於 8位的處理器,例如 16位或者 32位的處理器,由於暫存器寬度大於乙個位元組,那麼必然存在著乙個如果將多個位元組安排的問題。因此就導致了大端儲存模式和小端儲存模式。例如乙個 16bit 的short型x 在記憶體中的位址為 0x0010,x 的值為0x1122 那麼0x11 為高位元組...
大小端問題
大小端問題 跨位元組位域大小端轉換例項講解 注 結構體整體當做u16 u32來賦值時才會產生這種問題,如果是按位元組或者移位方式訪問則沒有問題 typedef struct s bit sample 測試程式 vos void bigendiandomainfiledtest vos void 1 ...
大小端問題
大小端問題 最近工作中,有兩次遇到大小端問題,所以花時間寫這篇日誌,總結一下。1.實際需求 1 前段時間寫了乙個修復損壞的gzip檔案的tool,在linux server上編譯執行沒有問題。但是在solaris server上運編譯執行,結果總是和預期的不一致,跟蹤發現是由大小端問題導致的 2 最...