函数实现--检测当前平台大小端

如图:

把a这个int数存放到point指向的空间。如果是小端字节序存储模式,那么低地址存放低位数据。内存高位存放高位数据。

如果是大端字节序。低地址存放高位数据。内存高位存放低位数据。

在这里插入图片描述
我们只需从point指针向后访问一个字节得到的这个数如果是十六进制的44,那么就是小端。否则就是大端。

代码演示:

int check_sys()
{
    
    
	int i = 0x11223344;
	
	if (0x44 == *(char*)&i)
	{
    
    
		return 0;
	}
	return 1;
}


int main()
{
    
    
	int res = check_sys();

	if (res == 0)
		printf("小端");
	else
		printf("大端");
	

	return 0;
}

还可以利用联合体的内存共用特性实现。

int check_sys()
{
    
    
	union Un
	{
    
    
		int i;
		char c;
	} u1;

	u1.c = 1;

	return u1.c; //返回1为小端。否则为大端。
}

猜你喜欢

转载自blog.csdn.net/juggte/article/details/115032999