判斷大端小端

2021-09-08 08:58:07 字數 955 閱讀 5207

大端模式(big endian)和小端模式(little endian)。

在我們傳送資料的時候,我們首先要確定是大端還是小端模式來進行的,在接收方接收的資料必須知道資料是大端還是小端模式,才能正確地讀取和儲存資料起來,否則就會出錯。

有些時候cpu公司用大端(c51微控制器);有些cpu用小端(arm)。我們寫**的時候需要通過寫**來測試當前系統是打斷還是小端模式

兩種方法:

1.利用位址強制型別轉換

void

funtest1()

else

printf(

"大端儲存\n");

}

void

funtest2()

u; u.i = 1

;

if (u.c == 1

)

else

printf(

"大端儲存\n");

}

注:1)聯合體的概念和特徵:union維護足夠的空間來存放多個資料成員中的「一種」,而不為每乙個資料成員都配置空間,在union中所有的成員共用同乙個空間,同一時間只儲存乙個資料成員,最大的特徵就是所有的資料成員具有相同的起始位址即聯合體的基位址。

2)計算機中位元組儲存主要有兩種:大端模式(big_endian)和小端模式(little_endian),從英文名字上可以明白,大端模式是從低位址開始,高位結束;小端模式是從高位址開始,低位址結束。

3)利用union中所有資料成員具有同樣的起始位址的特點,通過乙個int成員儲存1,然後通過char成員來讀取,即可巧妙地得出資料存放的方式,若通過char成員(即讀取起始位置上的第乙個位元組)讀取,若得出值為1,則說明是小端模式。

參考:

posted @

2018-10-09 15:26

小時候挺菜 閱讀(

...)

編輯收藏

大端小端判斷

聯合體是共享記憶體,在聯合體重定義乙個char型別,乙個int型別,給int資料賦值為1,根據char的值是否為1就可以判斷大小端了 若char型別為1,則為小端 若char型別不為1,則為大端 判斷大小端 static bool islocalhostbigendian void num num....

判斷大端小端模式

試題1 請寫乙個 c函式,若處理器是 big endian 的,則返回 0 若是 little endian 的,則返回1 解答 int checkcpu c c.a 1 return c.b 1 剖析 嵌入式系統開發者應該對 little endian 和big endian 模式非常了解。採用 ...

大端小端的判斷

大端位元組序 big endian 是一種將資料高有效位存放在低記憶體位址的方式,而資料低有效位存放在高記憶體位址。如圖是大端機多位元組位元組序 如果是帶位域的話,比如乙個佔一位元組的結構體 struct s struct s s 對於大端機,s的兩個位域成員x1和x2都位於記憶體a所對應的乙個位元...