大小端模式

般解决大小端问题 使用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

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问题引入 加3g实验室的艰难之旅,遇到一道这样的实验室面试题: 阅读以下代码,计算结果。 ** 输出结果为2000...
    Utte阅读 5,897评论 0 0
  • 定义 大端模式(Big-Endian):数字的低位字节保存在内存地址的高位,高位字节保存在内存地址的低位。 小端模...
    长仙人阅读 3,511评论 1 0
  • 大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数...
    GeniusWong阅读 1,839评论 0 1
  • 1:处理器存储多字节数据时,存在大端和小端模式;2:处理器存储单字节数据时,位顺序也存在大端和小端模式;3:小端模...
    恰冯同学年少阅读 2,944评论 0 1
  • 在存储器中的数据存储方式有两种: 大端模式 小端模式 大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字...
    guanjianhe阅读 1,644评论 0 0