判斷大小端模式 聯合 強制型別轉換

2021-06-09 03:50:48 字數 775 閱讀 3656

資料0xf432:

----小端模式:x86的cpu在記憶體中儲存的是0x32, 0xf4

----大端模式:一些risc架構的處理器在記憶體中儲存的是0xf4, 0x32

方法1:利用聯合的特點。聯合中的資料成員是共享儲存空間的,所分配的空間為資料成員最大所需的記憶體數。程式定義了endian_un的聯合體,其中包含兩個資料成員,乙個是short型別的資料成員var(32位系統為2位元組),乙個是字元型別的字元陣列bits,字元陣列的元素個數為short型別的位元組數。

程式將var賦值為0x0102,由於聯合結構的特點,bits字串陣列中同樣儲存了0x0102這一數值。通過判斷字串中的低位和高位儲存的內容,就可以知道系統是little-endian還是big-endian的

#include int is_little_endian(void)

int main(void);

flag.var = 0x0102;

if(sizorf(short) == 2)

if(is_little_endian())

printf("judged by second method, little_endian\n");

else

printf("judged by second method , big_endian\n");

return 0;

}

網路中的傳送的資料都是大端模式

linux提供了htons,htonl,ntohl,ntohl四個函式用於轉換

判斷大小端模式

學c語言時,了解過大小端模式,但是一直都每怎麼理解,對於網上查到的各種判斷大小端的程式也是看的一知半解。最近再次看到大小端這個問題時,終於感覺頓悟了。以下是我的理解,如有錯的地方請指出。大端模式,是指資料的高位元組儲存在記憶體的低位址中,而資料的低位元組儲存在記憶體的高位址中。小端模式,是指資料的高...

大小端模式轉換

不同機器內部對變數的位元組儲存順序不同,有的採用大端模式 big endian 有的採用小端模式 little endian 大端模式是指高位元組資料存放在低位址處,低位元組資料放在高位址處。小端模式是指低位元組資料存放在低位址處,高位元組資料放在高位址處。在網路上傳輸資料時,由於資料傳輸的兩端可能...

小端模式與強制資料型別轉換

c 資料型別轉換的問題 include void main int i 0xb62 char c c i cout 這裡為什麼輸出的是b?版本一 有問題,結果無論如何都是34,不能說明34是高位址的還是低位址的 版本二 根據 shineyan1991shineyan1991的建議 從上圖可知,cpu...