大端:高位字节在内存的低地址空间,低位字节在内存的高地址空间。如果要把数据0x12345678存储,按照以下方式存储,则为大端模式。示例如图1。
小端:高位字节在内存的高地址空间,低位字节在内存的低地址空间。如果要把数据0x12345678存储,按照以下方式存储,则为小端模式。示例如图2。
图2
1.使用强制类型转换。取,判断低位地址的数据是否为以,如果是,则为小端,否则为大端。
#include<stdio.h>
int main()
{
int i = 1;
(*(char*)&i == 1) ? printf("little-endiann") : printf("Big-endiann");
return 0;
}
2.使用指针操作。
#include<stdio.h>
int main()
{
int a = 0x11223344;
char *b = (char *)&a;
printf("%pn", *b);
((*b) == 0x44) ? printf("little-endiann") : printf("big-endiann");
return 0;
}
3.使用联合体。联合体的特点是使用数据类型最大的数据作为联合体的大小,因此,char a和int b公用内存地址空间,判断a的值就是判断b的低地址空间的值。
#include<stdio.h>
union un
{
char a;
int b;
};
int main()
{
union un un1;
un1.b = 1;
if (un1.a == 1)
{
printf("little-endiann");
}
else
{
printf("big-endiann");
}
return 0;
}