#include <iostream>
void judgeEndian() {
int a = 0x01234567;
// Windows 电脑按字节编址,int型占 4 Bytes
// big endian: 01 23 45 67
// little endian: 67 45 23 01
printf("a存放的首地址: %xH\n", &a);
int c = *(char*)&a; // 取变量a这个int型的首地址,存放在内存空间的首地址;
// (每个char只占一个字节,故这里转换为char指针,取出内存中a每个字节中的值)
for (int i = 0; i < sizeof(a); ++i) {
//%x 表示输出16进制
printf("存放值:%02xH 存放地址:%xH\n", *((char*)&a + i), (char*)&a + i);
}
if (c == 0x01) printf("Big Endian\n");
if (c == 0x67) printf("Little Endian\n");
}
int main() {
judgeEndian();
return 0;
}
// Console Output:
//a存放的首地址: 61fde4H
//存放值:67H 存放地址:61fde4H
//存放值:45H 存放地址:61fde5H
//存放值:23H 存放地址:61fde6H
//存放值:01H 存放地址:61fde7H
//Little Endian