字节序
多字节数据的存储顺序,可以分为小端和大端存储。
如:
int a = 0x12345678
变量a是int类型,所以开辟4个字节的空间,把变量a的值拆分,把内容存入到这个四个字节的空间中。
小端存储
低位字节存储在低地址
大端存储
高位字节存储在高地址
如何判断当前系统的字节序?
创建代码:01_endian.c (含:什么是共用体?)
#include<stdio.h>
/*
声明一个共用体
共用体的所有成员共用同一块内存。
a占四个字节,b占一个字节。由于两者共用,所以b刚好与a的第一个字节共用。
第一个字节是低地址,如果a的值的低位字节存储在低地址,那么就是小端。
*/
union MyUnion
{
int a;
char b;
};
int main(int argc,char const *argv[])
{
// 定义共用体
union MyUnion myun;
myun.a = 0x12345678; // 左边是高位字节,右边是低位字节。
//打印联合体的初始值
printf("a = %#x\n",myun.a);
printf("b = %#x\n",myun.b);
if(myun.b == 0x78) printf("小端存储\n"); // 低位字节 0x78,存储在低地址(第一个字节),所以是小端
else printf("大端存储\n");
return 0;
}
linux编译和执行c语言代码
gcc 01_endian.c
./a.out