大小端模式介绍及两种检测方式

大端模式(big endian)和小端模式(little endian)。
在我们发送数据的时候,我们首先要确定是大端还是小端模式来进行的,在接收方接收的数据必须知道数据是大端还是小端模式,才能正确地读取和存储数据起来,否则就会出错。

一个32位的二进制在内存中的存储时有2中分布方式:高字节对应高字节(大端模式)、高字节对应低地址(小端模式)。有些时候CPU公司用大端(C51单片机);有些CPU用小端(ARM)。我们写代码的时候需要通过写代码来测试当前系统是打断还是小端模式

本机环境: win10 64位 VS2013

两种方法:

1.利用地址强制类型转换

void funtest1()
{
	int i = 1;
	char j = *((char*)&i);
	if (j == 1)
	{
		printf("小端存储\n");
	}
	else
		printf("大端存储\n");
}

2.利用联合体性质:不同类型变量共享同一块内存

void funtest2()
{
	union UN
	{
		int i;
		char c;
	}u;
	u.i = 1;
	
	if (u.c == 1)
	{
		printf("小端存储\n");
	}
	else
		printf("大端存储\n");
}
结果:

大小端模式介绍及两种检测方式_第1张图片


你可能感兴趣的:(C)