寫程序判斷系統是大端序還是小端序


  大端是高位字節先存儲(低地址)
  小端是低位字節先存儲(低地址)
  網絡字節序是大端的,也就是高位字節先傳輸
  而int--char的強制轉換,是將低地址的數值截斷賦給char,利用這個准則可以判斷系統是大端序還是小端序

 
#include <iostream>
using namespace std;
int main()
{
    int a = 0x1234;
    char c = static_cast<char>(a);
    if (c == 0x12)
        cout << "big endian" << endl;
    else if(c == 0x34)
        cout << "little endian" << endl;
}

  利用union同理也可以做出判斷。

#include <iostream>
using namespace std;
union endian
{
    int a;
    char ch;
};
int main()
{
    endian value;
    value.a = 0x1234;
    if (value.ch == 0x12)
        cout << "big endian"<<endl;
    else if (value.ch == 0x34)
        cout << "little endian"<<endl;
}
  endian中的ch對應整個endian的低地址段,若這一段內容等於0x34,即等於整數0x1234中的低位字節,說明低位字節先存儲,說明是小端序。反之若ch=0x12說明高位字節先存儲,說明是大端序。
 
總而言之:
 
  高位字節在低地址,低位字節在高地址,大端序。
  高位字節在高地址,低位字節在低地址,小端序。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM