[C/C++] 判断电脑存储模式(大端/小端)

发布时间 2023-04-03 11:17:55作者: 小贼的自由

C语言版本:

#include <stdio.h>
#include <inttypes.h>

int main() {
    uint32_t num = 0xaabbccdd;                      // 字节方向:高->低,也就是aa是高字节,dd是低字节
    uint8_t *point = (uint8_t*)(&num);
    for (int i = 0; i < sizeof(num); ++i) {         // 低地址开始输出
        printf("%hx", point[i]);
    }
    /**
     * 大端(高字节存放在低地址)输出为:   aabbccdd
     * 小端(低字节存放在低地址)输出为:   ddccbbaa
     */ 
    return 0;
}

 

C++版本:

#include <iostream>
#include <inttypes.h>
using namespace std;

int main() {
    uint32_t num = 0xaabbccdd;                      // 字节方向:高->低,也就是aa是高字节,dd是低字节
    uint8_t *point = (uint8_t*)(&num);
    for (int i = 0; i < sizeof(num); ++i) {         // 低地址开始输出
        cout << hex << (int)point[i];
    }
    /**
     * 大端(高字节存放在低地址)输出为:   aabbccdd
     * 小端(低字节存放在低地址)输出为:   ddccbbaa
     */ 
    return 0;
}