原创 (原创)确认大端模式或小端模式(最直接有效的方法)

2012-8-28 20:27 1469 23 25 分类: MCU/ 嵌入式

预备课:深刻理解大端模式与小端模式的概念。

 

大端模式(Big_endian):字数据的高字节存储在低地址中,而字数据的低字节存放在高地址中。

小端模式(Little_endian):字数据的高字节存储在高地址中,而字数据的低字节存放在低地址中。

 

例:0x12345678在内存中的存储为例:

大端模式内存布局:

| 0x78 | 0x56 | 0x34 | 0x12 |

--------------->高地址

 

小端模式内存布局:

| 0x12 | 0x34 | 0x56 | 0x78 |

--------------->高地址

 

但我们如何判别当前系统为大端模式还是小端模式呢?

 

方法1:

INT32U i = 0x12345678;

INT8U *p = (INT8U *)(&i);

if(p[0]==0x12)

printf("Big_endian");

else

printf("Little_endian");

 

注:方法1为个人觉得为最直接有效的方法,推荐!

 

方法2:

判别当前系统为大端模式还是小端模式有很多种方式,比如利用union型数据概念!

union型数据所占的空间等于其最大成员所占的空间,对union型成员存取都从相对于该联合体基地址的偏移量为0处开始,也就是联合体的访问对哪个变量的存取都是从union的首地址位置开始。

 

int checksystem(void)

{

union check{

int i;

char ch;

}c;

c.i= 1;

return (c.ch==1);

}

如果checksystem返回1则为大端模式,返回1为小端模式。

 

方法3:

除了以上方法外,当然我们可不不利用函数来判定,直接看内存即可,在此就不介绍了。

 

作者:tdyizhen1314

(现从事LED行业,专注于户外大型LED显示屏控制系统的研发,希望与大家一起交流,共同进步)

邮箱: 495567585@qq.com  

          td.logic@hotmail.com

更多文章查看请同外博客:http://www.cnblogs.com/tdyizhen1314/

文章评论2条评论)

登录后参与讨论

用户424225 2012-8-16 23:26

很有用,尤其是在单片机中

用户424225 2012-8-16 23:25

很有用,尤其是在单片机中
相关推荐阅读
用户234413 2012-11-06 19:55
(笔记)电路设计(九)之三极管的应用
请详见同名博客: http://www.cnblogs.com/tdyizhen1314/archive/2012/11/06/2757644.html   作者:tdyizhen13...
用户234413 2012-11-02 18:35
(笔记)电路设计(八)之三极管什么时候工作在饱和区
注:此文章转自网络,前段时间在网上看到了这么精彩的争论,于是珍藏下来,生怕以后再也找不到,希望大家可以看看,有时间深究一下三极管饱和区的工作状态。   请详见: ht...
用户234413 2012-10-31 19:27
(笔记)电路设计(七)之整流二极管的应用
请详见同名博客: http://www.cnblogs.com/tdyizhen1314/archive/2012/10/30/2746915.html   作者:tdyizhen13...
用户234413 2012-10-31 19:27
(笔记)电路设计(六)之稳压二极管的应用
请详见同名博客: http://www.cnblogs.com/tdyizhen1314/archive/2012/10/26/2741701.html   作者:tdyizhen13...
用户234413 2012-10-25 19:11
(笔记)电路设计(五)之电感的应用
请详见同名博客: http://www.cnblogs.com/tdyizhen1314/archive/2012/10/25/2739957.html   作者:tdyizhen13...
用户234413 2012-10-25 19:10
(笔记)电路设计(三)之0欧姆电阻、磁珠、电感的应用
请详见同名博客: http://www.cnblogs.com/tdyizhen1314/archive/2012/10/11/2720408.html   作者:tdyizhen13...
我要评论
2
23
关闭 站长推荐上一条 /2 下一条