c語言判斷大端小端
發布時間: 2025-04-15 14:55:23
1. 大端模式和小端模式的區別及如何判斷的存儲器的模式
一個數需要超過一個位元組來存儲時,就有大端和小端的區別,只用一個位元組時,無所謂大小端
低位的放在低地址,也就是小個在前,叫小端,反之叫大端
c和c++需要面對這樣的問題,java等高級語言已經屏蔽這個差異,不需要額外處理
在c中,可以用以下代碼片段來判斷是大端還是小端
union {char c; int i;} u;
u.i = 1;
if(u.c == 1){//小端}
else{//大端}
2. 判斷一個機器使用的是大端存儲還是小端存儲
下面的程序可以判斷一台機器是大端存儲還是小端存儲。
[cpp]view plain
#include<stdio.h>
intmain(intargc,char**argv){
//聯合(union)中,所有成員引用的是內存中相同位置,
//由具體成員類型決定了這些位如何被解釋
union{
shorts;
charc[sizeof(short)];
}un;
un.s=0x0102;//16進制數中,02是低序位元組,01是高序位元組
if(sizeof(short)==2){
if(un.c[0]==1&&un.c[1]==2){
printf("big-endian ");
}elseif(un.c[0]==2&&un.c[1]==1){
printf("little-endian ");
}else{
printf("unknow ");
}
}else{
printf("sizeof(short)=%d ",sizeof(short));
}
return0;
}
熱點內容