大端格式:
在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。
小端格式:
与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。
判断CPU是大端格式还是小端格式,程序见下:(变量名存储的是低地址)
using namespace std;
int main(void)
{
int s=0x;
int a[2]={0};
cout<<&a[0]<
if(*(char*)&s==0x12)
cout<<"big endian"<
else if(*(char*)&s==0x78)
cout<<"little endian"<
}
嵌入式系统开发者应该对Little-endian和Big-endian模式非常了解。例如,16bit宽的数0x1234在Little-endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:
|
内存地址 |
0x4000 |
0x4001 |
|
存放内容 |
0x34 |
0x12 |
而在Big-endian模式CPU内存中的存放方式则为:
|
内存地址 |
0x4000 |
0x4001 |
|
存放内容 |
0x12 |
0x34 |
{
unsigned short ret;
byte tmp[2];
tmp[0]=data[1];
tmp[1]=data[0];
memcpy(&ret,tmp,sizeof(tmp));
return ret;
}
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/208238.html原文链接:https://javaforall.net
