判断机器大小端的方式

使用联合体

#include <stdio.h>
#include <stdint.h> // 用于 uint32_t 和 uint8_t

int isLittleEndian() {
    union {
        uint32_t i;  // 4字节整数
        uint8_t c[4]; // 4个单字节
    } test = {0x12345678}; // 初始化一个测试值

    // 如果低地址存储的是最低位字节(0x78),则是小端
    return test.c[0] == 0x78;
}

int main() {
    printf("Is Little-Endian? %s\n", isLittleEndian() ? "Yes" : "No");
    return 0;
}

指针强转 

#include <stdint.h>

int isLittleEndian() {
    uint32_t num = 0x00000001; // 4字节数据
    uint8_t *p = (uint8_t *)&num; // 转换为单字节指针

    // 如果低地址存储的是最低位(0x01),则是小端
    return *p == 0x01;
}
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐