判断系统的存储模式—大小端问题

大端模式:字数据的高字节存储在低地址中而字数据的的低字节存储在高地址中;
小端模式:字数据的低字节存放在低字节中,而字数据的高字节存放在高地址中。
例如:int i =0x00 00 00 01,那么i在大小端下的存放模式分别是这样:
在这里插入图片描述
如何判断一个系统是大端存放还是小端存放呢?我们可以在一个4字节的数据上面截取低地址上的1个字节,
如果低地址上截取的字节与原数据的低字节数据一致,说明该系统为小端存放;
如果低地址上截取出来的字节与原数据的高位数据一致,说明系统为大端存放;
下来编程实现:

int check_sys1()//大小端判断
{
	int i = 0x1;
	return  *(char*)&i;//char*类型指向低地址,然后返回低地址一个字节的数据
}
int check_sys2()//大小端判断函数
{
	union
	{
		int i;
		char c;
	}un;
	un.i = 1;
	return un.c;
}
int main()
{
	int ret = check_sys1();
	if (ret == 1)
	{
		printf("小端\n");
	}
	else
	{
		printf("大端\n");
	}
	return 0; 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值