大端小端模式簡單介紹 以及三種檢測大小端儲存的方法
阿新 • • 發佈:2019-02-09
大端模式:是指資料的高位元組儲存在記憶體的低地址中,而資料的低位元組儲存在記憶體的高地址端。
小端模式,是指資料的高位元組儲存在記憶體的高地址中,低位位元組儲存在在記憶體的低地址端。
比如 一個變數x的十六進位制表示為 0x01 23 45 67,
如果是大端儲存 則是這樣儲存的
高地址--------->低地址
67
45 23 01 資料的高位 放在低地址 低位放在高地址
而小端模式 是這樣
01 23 45 67 資料的低位 放在低地址 高位放在高地址
大小端模式的檢測(環境 win7 vs2008)
方法(1)利用利用共用體幾個不同的變數共同佔用一段記憶體的性質輸出第一個位元組
輸出結果:
01 00 00 00
小端模式儲存!
方法(1)利用利用共用體幾個不同的變數共同佔用一段記憶體的性質輸出第一個位元組
#include <stdio.h>
int check()
{
union UN
{
char c;
int i;
}un;
un.i = 1;
return un.c;
}
int main(void)
{
if(check()==1)
printf("小端模式儲存!\n");
else
printf("大端模式儲存!\n");
return 0;
}
方法(2)
方法(3)#include <stdio.h> int check() { int i = 1; i = *(char*)&i;//取 i 的地址 強制型別轉換後解引用 return i; } int main(void) { if(check()==1) printf("小端模式儲存!\n"); else printf("大端模式儲存!\n"); return 0; }
#include <stdio.h> int check() { union UN { char a [4]; int i ; } un ; un .i = 1; //02 是整數不夠2位就補上0 x是以16進位制輸出 hhx 表示只輸出兩位 printf ("%02hhx %02hhx %02hhx %02hhx\n", un .a [0], un. a [1],un . a[2], un .a [3]); return un . a[0]; } int main(void) { if(check()==1) printf("小端模式儲存!\n"); else printf("大端模式儲存!\n"); return 0; }
輸出結果:
01 00 00 00
小端模式儲存!