zoukankan      html  css  js  c++  java
  • (原创)确认大端模式或小端模式(最直接有效的方法)

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

    大端模式(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

  • 相关阅读:
    大数据的起步:初学者
    接触区块链
    学习开始了,博客开始了
    hadoop分布式的搭建过程
    Java笔试题
    JavaSCript全局变量与局部变量
    OSGI
    restful
    jersey
    JSP+Servlet+Mybits小例子
  • 原文地址:https://www.cnblogs.com/tdyizhen1314/p/2626029.html
Copyright © 2011-2022 走看看