首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

如何判斷主機位元組序:大端與小端的 C 語言實作技巧

     編輯:關於C語言

如何判斷主機位元組序:大端與小端的 C 語言實作技巧

所謂「大端」是指高位元組存放在低記憶體位址,而「小端」則相反,低位元組佔據低位址。以十六進位值 0x12345678 為例,在大端機器上記憶體中依序為 12 34 56 78,小端則為 78 56 34 12。同一款 CPU 在不同作業系統下可能採用不同位元組序,但我們常見的 x86 架構搭配 Windows/Linux 均為小端模式。

利用 Union 特性快速檢測

Union(聯合體)所有成員共用同一塊記憶體,其大小由佔用空間最大的成員決定。我們可以定義一個包含 int 與 char 的 union,將 int 賦值為 0x01000002,然後檢查 char 成員(佔用最低位址的位元組)是否為 0x01。若是則為大端,否則為小端。

完整範例程式碼

#include <iostream>
using namespace std;

union EndianTest {
    int number;
    char byte;
} test;

bool isBigEndian() {
    test.number = 0x01000002;
    return (test.byte == 0x01);
}

int main() {
    if (isBigEndian())
        cout << "Big Endian" << endl;
    else
        cout << "Little Endian" << endl;
    return 0;
}

在 32 位元系統上,int 佔 4 位元組,char 僅取第一個位元組,因此能直接反映最低位址儲存的是高位元組還是低位元組。這項技巧簡潔高效,廣泛用於跨平台網路程式開發中。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved