大小端判斷

2021-08-11 07:50:00 字數 683 閱讀 7012

大端模式(big_endian):字資料的高位元組儲存在低位址中,而字資料的低位元組則存放在高位址中。

小端模式(little_endian):字資料的高位元組儲存在高位址中,而字資料的低位元組則存放在低位址中。

(注意:個人覺得只需記住小端模式低位元組存放在低位址)

在這我只總結了兩種方式的大小端判斷:

1、採用union資料型別判斷

union資料型別存放順序是所有成員都從低位址開始存放,而且所有成員共享儲存空間,利用這一特點在乙個聯合體裡設計兩的位元組大小不同的型別變數就可以解決。

由圖可見test.c的值是test.i的低位元組本機應為小端儲存(vs2015),因為低位址對齊test.i的低資料存在了低位址所以是小端儲存。

2、採用指標強轉

void isbigendian2()

{ short int a = 0x1122;//十六進製制,乙個數值佔4位

char b = *(char *)&a; //通過將short(2位元組)強制型別轉換成char單位元組,b指向a的起始位元組(低位元組)

if( b == 0x11)//低位元組存的是資料的高位元組資料

{ cout<

判斷大小端

int i 1 char p char i if p 1 printf 1 else printf 2 大小端儲存問題,如果小端方式中 i佔至少兩個位元組的長度 則i所分配的記憶體最小位址那個位元組中就存著1,其他位元組是0.大端的話則1在i的最高位址位元組處存放,char是乙個位元組,所以強制將c...

大小端判斷

思路 聯合體union的存放順序是所有成員都從低位址開始存放,利用該特性就可以輕鬆地獲得了 cpu對記憶體採用little endian還是big endian模式讀寫。給出c linux其實也差不了多少 include using namespace std union judge judge f...

CPU大小端判斷

big endian 認為第乙個位元組是最高位位元組 按照從低位址到高位址的順序存放資料的高位位元組到低位位元組 大端 而little endian 則相反,它認為第乙個位元組是最低位位元組 按照從低位址到高位址的順序存放資料的低位位元組到高位位元組 小端 用 c程式設計實現判斷,如下 測試你的機器...