目录
一、百度
1、判断当前机器的字节序(两种方法)
大小端介绍
大端字节序:
把数据的低位字节序的内容存放在高地址处,高位字节序的内容存放在低地址处
小端字节序:
把数据的低位字节序的内容存放在低地址处,高位字节序的内容存放在高地址处
Example
int a=0x11223344;
//前面是高位字节序,越往后字节序越低
//地址的存放是由低到高,前面低,后面高
如果是11 22 33 44 这样存放,11是高字节序,存放在低地址处,即为大端字节序
如果是44 33 22 11 这样存放,44是低字节序,存放在低地址处,即为小端字节序
Solution 1
指针法
//判断机器是大端字节序还是小端字节序
#include <stdio.h>
int main()
{
int a=1;// 1小端是01 00 00 00,大端是00 00 00 01
char*p=(char*)&a;//取a的地址应该是int *,所以类型转换
if(*p==1)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
return 0;
}
Solution 2
联合体法
#include <stdio.h>
int check_sys()
{
union U
{
char c;
int i;
}u;
u.i=1;
return u.c;
//返回1 就是小端
//返回0 就是大端
}
int main()
{
int ret=check_sys();
if(ret==1)
{
printf("小端\n");
}
if(ret==0)
{
printf("大端\n");
}
return 0;
}