寫一個函式判斷系統是大端還是小端。若處理器是Big_endian的,則返回0;若是Little_endian的,則返回1.
大端格式:在這種格式中,字資料的高位元組儲存在低地址中,而字資料的低位元組則存放在高地址中
小端格式:與大端儲存格式相反,在小端儲存格式中,低地址中存放的是字資料的低位元組,高地址存放的是字資料的高位元組
聯合體union的存放順序是所有成員都從低地址開始存放。
Int checkCPU ()
{
Union w
Int a;
Char b;
}c;
c.a=1;
return (c.b==1);
}
UNIX 網路程式設計 第一卷 78頁 (英文版) 給出了這樣一段程式碼:
PS: 下面程式碼中的
unp.h
程式碼
1
2 #include "unp.h"
3
4 int main(int argc ,char ** argv)
5 {
6
7 union {
8 short s;
9 char c[sizeof(short)];
10 }un;
11
un.s
12 printf("%s\n",CPU_VENDOR_OS);
13
14 if(sizeof(short) == 2)
15 {
16 if(un.c[0] == 1 && un.c[1] ==2 )
17 printf("big-endian\n");
18 else if (un.c[0] == 2 && un.c[1] == 1)
19 printf("little-endian\n");
20 else printf("unknow");
21 }else
22 printf ( "sizeof(short) = %d\n",sizeof(short));
23 exit(0);
24 }
25
寫一個函式判斷系統是大端還是小端。若處理器是Big_endian的,則返回0;若是Little_endian的,則返回1.
大端格式:在這種格式中,字資料的高位元組儲存在低地址中,而字資料的低位元組則存放在高地址中
小端格式:與大端儲存格式相反,在小端儲存格式中,低地址中存放的是字資料的低位元組,高地址存放的是字資料的高位元組
聯合體union的存放順序是所有成員都從低地址開始存放。
Int checkCPU ()
{
Union w
{
Int a;
Char b;
}c;
c.a=1;
return (c.b==1);
}
UNIX 網路程式設計 第一卷 78頁 (英文版) 給出了這樣一段程式碼:
PS: 下面程式碼中的
unp.h
是Stevens 老大自己定義的一個頭檔案,具體的程式碼在這本書的附錄裡有給出來.程式碼
1
2 #include "unp.h"
3
4 int main(int argc ,char ** argv)
5 {
6
7 union {
8 short s;
9 char c[sizeof(short)];
10 }un;
11
un.s
= 0x0102;12 printf("%s\n",CPU_VENDOR_OS);
13
14 if(sizeof(short) == 2)
15 {
16 if(un.c[0] == 1 && un.c[1] ==2 )
17 printf("big-endian\n");
18 else if (un.c[0] == 2 && un.c[1] == 1)
19 printf("little-endian\n");
20 else printf("unknow");
21 }else
22 printf ( "sizeof(short) = %d\n",sizeof(short));
23 exit(0);
24 }
25