前言:
在B站上看了一个视频
up 主 给了一段代码 感觉挺有意思的 试了一试 果然
32位 4字节 int 1 在计算机中实际的编码 0x00000001
大端系统在内存表示 01 00 00 00
小端系统在内存表示 00 00 00 01
我们写个简单的函数 来判断系统是大端还是小端
union EndianTest
{
int8_t u[4];
int32_t i;
};
static bool isLittleEndianSystem(){
EndianTest t;
t.i = 1;
qDebug()<<&t.i;
qDebug()<<&t.u;
return t.u[0] == 1;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug()<<isLittleEndianSystem();
return a.exec();
}
他是用了一个union 共用体
这里又补充了一下 union 的知识
就是说
int8_t u[4];
int32_t i;
这俩的内存是一样的
那么 如果 i 是1 如果是小端 那么 u[0] 就是1 否则就是大端