🍎1. 什么是大小端存储呢 ?
🍎2. 如何用代码判断是大端还是小端存储呢?
注意:❗判断下面代码 整形的 a
和 字符型 c
的时候,要把 0x1234
转换成为 2 进制
进行分析,0001 0010 0011 0100
进行分析,整形 4 个字节,字符 1 个字节 (8位)。
- 🐧① 用强制类型转换
// 1. 使用强制类型转换
#include <iostream>
using namespace std;
int main()
{
int a = 0x1234;
//由于int和char的长度不同,借助int型转换成char型,只会留下低地址的部分
char c = (char)(a);
if (c == 0x12)
cout << "big endian" << endl;
else if (c == 0x34)
cout << "little endian" << endl;
}
- 🐧② 用 union 联合体
#include <iostream>
using namespace std;
//union联合体的重叠式存储,endian联合体占用内存的空间为 每个成员字节长度的最大值
union endian
{
int a;
char ch;
};
int main()
{
endian value;
value.a = 0x1234;
//a和ch共用4字节的内存空间
if (value.ch == 0x12)
cout << "big endian" << endl;
else if (value.ch == 0x34)
cout << "little endian" << endl;
}