大端模式: 字数据的高字节存储在低地址中,而字数据的低字节存储在高地址中。
小端模式: 字数据的低字节存储在低地址中,而字数据的高字节存储在高地址中。
TCP/IP协议规定对于多字节数据,采用大端存储。
由于大小端存储的模式不同,可以借助共用体(union)来进行判别。对于共用体,内部变量共享同一片内存空间,如下图所示。通过给int型变量a赋值为1,判断char型变量b的值即可判断出当前系统是大端存储还是小端存储。
由于int和char在32位系统和64位系统所占字节数相同,因此使用上述两个变量判断大小端的方式既适用于32位系统又适用于64位系统。
#include <iostream>
#include <string.h>
using namespace std;
//判断系统大端还是小端存储
bool checkLittleEnd ()
{
union untest
{
int a;
char b;
} t;
t.a = 1;
return (t.b==1);
}
int main()
{
if (checkLittleEnd())
cout << "Little End!" << endl;
else
cout << "Big End!" << endl;
return 0;
}