共用体,用关键字union来定义,它是一种特殊的类。在一个共用体里可以定义多种不同的数据类型,这些数据共享一段内存,在不同的时间里保持不同的数据类型和长度的变量,以达到节省空间的目的。但是同一时间只能存储其中一个成员变量的值。
可以使用共用体判断系统是大端还是小端。
#include <iostream>
using namespace std;
union Test {
short a;
char b[sizeof(a)];
};
int main()
{
Test test;
test.a = 0x0102;
if (test.b[0] == 0x01 && test.b[1] == 0x02)
{
cout << "big endian" << endl;
}
else if (test.b[0] == 0x02 && test.b[1] == 0x01)
{
cout << "small endian" << endl;
}
system("pause");
return 0;
}
其中,big endian是指低地址存放最高有效字节,little endian则是低地址存放最低有效字节。
目前,几乎所有的网络协议都是采用大端的方式来传输数据的,当两台设备采用不同字节序的主机通信时,在发送数据前都必须经过字节序转换成为网络字节序后再进行传播。