大端、小端存储以及典型例题分析
2017-07-24 10:23
316 查看
小端:把数据的低字节序的内容存放在低地址处,把数据的高字节序的内容存放在高地址处。
大端:把数据的低字节序的内容存放在高字节处,把数据的高字节序的内容存放在低地址处。
举个例子:
int a=1;
这是在我的机器下的存储方式,是小端存储的。
int a=0x11223344;
用一个函数来检查机器是大端存储还是小端存储
1.将一个整形强制类型转换为字符类型
int check_sys()
{
int num = 1;
char *pc = (char*)#
if (*pc == 1)
{
return 1;//小端
}
else
{
return 0;//大端
}
}2.借助联合来检查机器是大端还是小端
int check_sys()
{
union Un
{
int i;
char c;
}un;
un.i = 1;
return un.c;
}
典例:在X86下,有以下程序
void main()
{
union
{
short k;
char i[2];
}*s,a;
s = &a;
s->i[0] = 0x39;
s->i[1] = 0x38;
printf("%x\n", a.k);
system("pause:");
}
输出结果是什么呢?
打印出来就是k1,k0,即3839.
大端:把数据的低字节序的内容存放在高字节处,把数据的高字节序的内容存放在低地址处。
举个例子:
int a=1;
这是在我的机器下的存储方式,是小端存储的。
int a=0x11223344;
用一个函数来检查机器是大端存储还是小端存储
1.将一个整形强制类型转换为字符类型
int check_sys()
{
int num = 1;
char *pc = (char*)#
if (*pc == 1)
{
return 1;//小端
}
else
{
return 0;//大端
}
}2.借助联合来检查机器是大端还是小端
int check_sys()
{
union Un
{
int i;
char c;
}un;
un.i = 1;
return un.c;
}
典例:在X86下,有以下程序
void main()
{
union
{
short k;
char i[2];
}*s,a;
s = &a;
s->i[0] = 0x39;
s->i[1] = 0x38;
printf("%x\n", a.k);
system("pause:");
}
输出结果是什么呢?
打印出来就是k1,k0,即3839.
相关文章推荐
- 大端模式Big Endian和小端模式Little Endian以及浮点数在内存中的存储
- 大端小端存储模式以及其对Union数据类型的影响
- 大端小端存储模式以及其对Union数据类型的影响
- 关于判断cpu大端存储还是小端存储的讨论与分析
- 大端字节序,小端字节序,以及负数的存储
- 关于大小端的简单介绍以及使用C写一个函数判断当前系统是大端存储还是小端存储
- 大端小端模式简单介绍 以及三种检测大小端存储的方法
- C++ 判断是大端存储还是小端存储
- 大端与小端存储模式详解
- 大端与小端存储方式
- 如何用程序确认当前系统的存储模式(大端模式、小端模式)
- e不会的大端小端存储模式
- 一个函数判断你的计算机是小端存储还是大端存储
- 大端与小端存储模式详解
- 关于文件、网络传输以及内存存储的大小端问题
- C# list存储的数据格式以及默认初始化空间,内存回收分析
- 大端字节序与小端字节序的电脑 对于相同数据的读写产生的分歧以及解决方式
- 字节存储排序:大端和小端的判别及转换
- 汇编机器码分析,同一对象不同字节在内存中的存储位置(大小端讨论)
- 大端与小端存储模式详解