判断一个主机是大端字节序还是小端字节序

大端字节序 0x 00 00 00 01
小端字节序 0x 01 00 00 00 低位放在低地址上

方法一

指针强转的方式

int Islittlend(){
	int a = 0x1;
	char* b = (char*)&a; //将a的地址强转成char*类型并存于b中
	if (*b == 0x0){
		return 0;
		//大端字节序
	}
	return 1;//小端字节序
}

int main(){
	printf("%d\n", Islittlend());
	system("pause");
	return 0;
}

在这里插入图片描述
所以在我这台电脑,是以小端字节序排列

方法二

借助联合体也能做到
判断最低地址的字节,判断它是地位还是高位,就可以直到。
先创建一个联合体

union Un
{
	int a;
	short b;
	char c;
};

画一张来体现这个联合体的内存分布
在这里插入图片描述
再进行判断

int IslittleEnd(){
	union Un u;
	u.a = 0x1;
	if (u.b == 0x1){
		return 1;//小端
	}
	return 0;
}

int main(){
	printf("%d\n", IslittleEnd());
	system("pause");
	return 0;
}

在这里插入图片描述
结果是一样的

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值