1.什么是大小端
大小端是指计算机系统中多字节数据的存储顺序方式,x86/x64架构使用小端模式
(1)大端模式
-
高位字节存储在低地址,低位字节存储在高地址
-
例子:数值
0x12345678
在内存中的存储顺序(地址从低到高):12 34 56 78
(2)小端模式
-
低位字节存储在低地址,高位字节存储在高地址
-
例子:数值
0x12345678
在内存中的存储顺序(地址从低到高):78 56 34 12
2.判断方法(c语言)
(1)共用体法,所有成员共享同一块内存空间
#include "stdio.h"
union test
{
int a;
unsigned char b;
}d;
int main()
{
d.a=0x12345678;
if(d.b == 0x12)
{
printf("大端");
}
else if(d.b == 0x78)
{
printf("小端")
}
return 0;
}
(2)指针法
#include "stdio.h"
int main()
{
int ch=0x12345678;
char *p;
p = (char *)&ch;
if(*p == 0x12)
{
printf("大端");
}
else if(*p == 0x78)
{
printf("小端")
}
return 0;
}
(3)位域法
#include "stdio.h"
union test
{
int i;
struct {
unsigned int bit0:8;
unsigned int bit1:8;
unsigned int bit2:8;
unsigned int bit3:8;
}bits;
}ch;
int main()
{
ch.i=0x12345678;
if(ch.bits.bit0 == 0x78)
{
printf("小端");
}
else
{
printf("大端")
}
return 0;
}
4. 函数封装方法
#include <stdio.h>
int test()
{
int x = 1;
return *(char *)&x;
}
int main()
{
if (test())
{
printf("小端");
}
else
{
printf("大端");
}
return 0;
}