确认当前系统的大小端存储模式
2015-10-22 09:31
267 查看
大端模式:数据的高字节,保存在内存的低地址中,而数据的低字节保存在内存的高地址中。
小端模式:数据的高字节,保存在内存的高地址中,而数据的低字节保存在内存的低地址中。
检查当前系统的存储模式为大小端的一种方式是使用union类型数据。
由于union中所有的数据成员共用一个空间,所有的数据成员都是共用一个起始地址。
空间的大小为数据成员中长度最长的数据成员。
具体实现如下:
union
{
int i;
char c;
}u;
int EndianCheck(void)
{
u.c = 0x01;
if(u.i == 1)
{
return 1;
}
else
{
return 0;
}
}
int main(int argc,char** argv)
{
if(EndianCheck)
{
printf("little Endian\n");
return 0;
}
printf("Big Endian\n");
return 0;
}
union中的成员i占四个字节,而c只有占一个字节。当c被赋值为1的时候,有其他三个字节值都为0。
如果取出低地址上的值为1,说明这个是小端模式。
如果取出高地址上的值为1,说明这个是大端模式。
这个位置判断i的值来确定。
小端模式:数据的高字节,保存在内存的高地址中,而数据的低字节保存在内存的低地址中。
检查当前系统的存储模式为大小端的一种方式是使用union类型数据。
由于union中所有的数据成员共用一个空间,所有的数据成员都是共用一个起始地址。
空间的大小为数据成员中长度最长的数据成员。
具体实现如下:
union
{
int i;
char c;
}u;
int EndianCheck(void)
{
u.c = 0x01;
if(u.i == 1)
{
return 1;
}
else
{
return 0;
}
}
int main(int argc,char** argv)
{
if(EndianCheck)
{
printf("little Endian\n");
return 0;
}
printf("Big Endian\n");
return 0;
}
union中的成员i占四个字节,而c只有占一个字节。当c被赋值为1的时候,有其他三个字节值都为0。
如果取出低地址上的值为1,说明这个是小端模式。
如果取出高地址上的值为1,说明这个是大端模式。
这个位置判断i的值来确定。
相关文章推荐
- SQLCE本地数据库
- 在Android 项目时的防止Memory leak 要注意的事项
- Android 之自定义用Activity作为dialog
- WIN XP SP2 X64+LANG+KEY
- 关闭WebLaf图形控件的反锯齿功能
- 重新设置MySQL的root密码
- vijosP1006 晴天小猪历险记之Hill
- Android 简化 findViewById
- strchr/strrchr
- IE常见bug
- 关于i++的解释
- 3.23、BI之SSIS之数据流目标(记录集目标)
- 3.22、BI之SSIS之数据流目标(excel目标)
- 倍数提高工作效率的 Android Studio 奇技
- 2015年O2O死亡榜:惨不忍睹
- windows下如何做软件崩溃前提示界面
- 【Java基础】Java中的多态
- 为什么要有handler机制?handler机制的原理
- 【PAT】1082. Read Number in Chinese (25)
- RequireJS知识总结