使用聯合,通過判斷首個成員的值,確定是大端還是小端模式:
bool isbigendian()num;
num.a = 0x1234; //低位->高位:大端:12,34;小端:34,12
if( num.b == 0x12 )取低8位
return
true;
return
false;
}
使用移位運算:而且該方法亦可用於小端模式轉成大端模式。
//32bit
/*將低8位(0~8位)左移24位,變成了高8位(24~32位);8~16位左移8位變成了(16~24位);
將原高8位和高16位右移,變成了新的低8位和低16位。*/
uint32_t reversebytes_uint32t(uint32_t value)
//64bit
// 先將64位的低32位轉成小端模式,再將64位的高32位轉成小端模式
// 在將原來的低32位放置到高32位,原來的高32位放置到低32位
uint64_t reversebytes_uint64t(uint64_t value)
小端模式和大端模式 大端模式和小端模式
0x123456在記憶體中的儲存方式 大端模式 低位址 小端模式 低位址 不難看出大端模式比較符合人的直觀認識 1.一開始是由於不同架構的cpu處理多個位元組資料的順序不一樣,比如x86的是小段模式,keil c51是大端模式。但是後來網際網路流行,tcp ip協議規定為大端模式,為了跨平台通訊,還...
判斷大端小端模式
試題1 請寫乙個 c函式,若處理器是 big endian 的,則返回 0 若是 little endian 的,則返回1 解答 int checkcpu c c.a 1 return c.b 1 剖析 嵌入式系統開發者應該對 little endian 和big endian 模式非常了解。採用 ...
大端模式與小端模式判斷
在大端模式下,資料的msb存放在低位址 在小端模式下,資料的lsb 存放在低位址。一 大端與小端 msb與lsb 在嵌入式開發中,大端 big endian 和小端 little endian 是乙個很重要的概念。假如現有一32位int型數0x12345678,那麼其msb most signifi...