小端字节序是指数据的低位存放在内存的低位,数据的高位存放在内存的高位。
大端字节序是指数据的低位存放在内存的高位,数据的高位存放在内存的地位。
以visual code 2022为例,它采用的是小端字节序,因此我们定义int i=1;查看内存会发现它是这么存放的
我们知道int是四个字节,这里是以16进制数存放在内存里,因此01对应二进制就是00000001,那么当然00对应的就是00000000,我们发现原本16进制的int型数据i=1对应的应该是00000001,但在visual code 2022中,因为他采用的是小端字节序,那么数据的低位01,就去到了内存的低位,然后依次地从数据低位到高位存放在地址的低位到高位。
那么,除了查看内存外,我们可以通过代码来知道它是采用什么存放方式吗,答案是可以,这里提供一种较为简便的方式,当然还有很多其它的方式。
#include <stdio.h>
int main()
{
int i = 1;
int temp;
temp = *(char*)&i;
temp == 1 ? printf("小端") : printf("大端");
return 0;
}
拿到i的32位地址后,强制转换位char* 类型,使得这个数据的地址的有效数从32位到8位,对其*解引用后也就是说拿到了该数据存放在内存中的低八位数据,那么如果采用小端字节序,低八位存放的就是01了,如果是大端字节序,低八位存放的当然就是00了