检测系统是大端序还是小端序

180 阅读1分钟

大端序小端序介绍

  • 大端字节序是指一个整数的高位字节存储在内存的低地址处,低位字节存储在内存的高地址处。
  • 小端字节序是指整数的高位字节存储在内存的高地址处,而低位字节则存储在内存的低地址处。

代码检测

#include <stdio.h>

void byteorder() {
    union {
        short value;
        char union_bytes[ sizeof(short)];
    } test ;

    test.value = 0x0102;

    if ((test.union_bytes[0] == 1) && (test.union_bytes[1] == 2)) {
        printf("big endian\n");
    } else if ((test.union_bytes[0] == 2) && (test.union_bytes[1] == 1)) {
        printf("little endian\n");
    } else {
        printf("unknown...\n");
    }
}

int main() {
    byteorder();
    return 0;
}

Ubuntu24.04上输出结果为little endian。现在PC大多采用小端字节序,因此小端字节序又被成为主机字节序。