程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 如何判斷主機是大端還是小端(字節序),大端字節

如何判斷主機是大端還是小端(字節序),大端字節

編輯:關於C語言

如何判斷主機是大端還是小端(字節序),大端字節


轉自:http://blog.csdn.net/forestlight/article/details/6933528

  所謂大端就是指高位值在內存中放低位地址,所謂小端是指低位值在內存中放低位地址。比如0x12345678在大端機上是12345678,在小端機上是78564312,而一個主機是大端還是小端要看cpu類型以及運行在上面的操作系統。同一款cpu在不同的操作系統使用的大小端情況是不同的。當然我們通常使用的x86+windows是小端。

        測試大小端一般使用union的特性。union是一個聯合體,所有變量公用一塊內存,只是在不同的時候解釋不同。其在內存中存儲是按最長的那個變量所需要的位數來開辟內存的。

       代碼如下:     

 1 #include <iostream>
 2 using namespace std;
 3 
 4 union 
 5 {
 6     int number;
 7     char s;
 8 }test;
 9 
10 bool testBigEndin()
11 {
12     test.number=0x01000002;
13     return (test.s==0x01);
14 }
15 
16 void main()
17 {
18     if (testBigEndin())     
19         cout<<"big"<<endl;
20     else 
21         cout<<"small"<<endl;    
22 }

其中union的實際內存長度是int,即一個字,在32位機上是32位。而char是一個byte,只會取第一個低地址字節。所以他的值可以用來判斷大小端。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved