美文网首页
大小端模式

大小端模式

作者: yuan6441952 | 来源:发表于2018-11-09 16:35 被阅读54次

    般解决大小端问题 使用union指针两个方法来判断。

    大小端模式:就是表示一个数值放在内存中的格式,高位对高地址还是高位对低地址 , 注意一点的是:无论怎么存放,读取的时候还是从低地址开始读取,只是解析的时候不同 。

    大端模式:高位对应低地址,低位对应高地址 ;

    小端模式:高位对应高地址,低位对应低地址 ;

    高对高则为小端(端口存的是低位,小的,则叫小端)

    用图形解释:

    用c语言写一个函数来测试当前机器的大小端模式 

    1:使用 union 测试 

    先把大概思路描述一下 

    union myunion 

    int a; 

    char b; 

    那么意味着 myuion的大小为4 ,int 和 char是共用内存的,若我们先存储一个int 1到这个内存中 然后以char来读取。是不是 1 布局四个字节。char读取的时候从低位读取一个字节进行char解析 。

    代码就是:

    union myunion

    {

        int a;

        char b;

    }

    int is_little_endiam(void)

    {

        uinon myunion u1;

        u1.a = 1;

        return u1.b//结合上图

        //大端返回0  小端返回1;

    }

    uinon的存取本质就是指针的强制转换,那么我们也可以用指针来检测大小端 :申请一个int a = 1,用指针指向这块地址,用(char * )的方法进行读取,也可以达到uinion的效果。

    代码为:

    intis_little_endiam(void)

    {

         int a  =1;

        char  b =  *(char*)(&a);

        return   b;

       return   u1.b ;//结合上图  //大端返回0  小端返回1

    }

    相关文章

      网友评论

          本文标题:大小端模式

          本文链接:https://www.haomeiwen.com/subject/xvyoxqtx.html