大小端問題

2021-10-07 16:17:44 字數 1117 閱讀 3618

計算機中,通常是以位元組為基本儲存單元,比如資料型別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 最...