您的位置:首页 > 其它

大端小端模式简单介绍 以及三种检测大小端存储的方法

2018-04-10 10:40 274 查看
大端模式:是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址端。
小端模式,是指数据的高字节保存在内存的高地址中,低位字节保存在在内存的低地址端。

比如 一个变量x的十六进制表示为 0x01 23 45 67,如果是大端存储 则是这样存储的 高地址--------->低地址        67 45 23 01    数据的高位 放在低地址 低位放在高地址而小端模式 是这样      01 23 45 67   数据的低位 放在低地址 高位放在高地址
大小端模式的检测(环境 win7  vs2008)

方法(1)利用利用共用体几个不同的变量共同占用一段内存的性质输出第一个字节[cpp] view plain copy
  1. #include <stdio.h>  
  2.   
  3. int check()  
  4. {  
  5.     union UN  
  6.     {  
  7.         char c;  
  8.         int i;  
  9.     }un;  
  10.     un.i = 1;  
  11.     return un.c;  
  12. }  
  13.   
  14. int main(void)  
  15. {  
  16.     if(check()==1)  
  17.         printf("小端模式存储!\n");  
  18.     else  
  19.         printf("大端模式存储!\n");  
  20.     return 0;  
  21. }  


方法(2)[cpp] view plain copy
  1. #include <stdio.h>  
  2. int check()  
  3. {  
  4.     int i = 1;  
  5.     i = *(char*)&i;//取 i 的地址 强制类型转换后解引用  
  6.     return i;  
  7. }  
  8. int main(void)  
  9. {  
  10.     if(check()==1)  
  11.         printf("小端模式存储!\n");  
  12.     else  
  13.         printf("大端模式存储!\n");  
  14.     return 0;  
  15. }  


方法(3)[cpp] view plain copy
  1. #include <stdio.h>  
  2. int check()  
  3. {  
  4.     union UN  
  5.     {  
  6.         char a [4];  
  7.         int i ;  
  8.     } un ;  
  9.     un .i = 1;  
  10.         //02 是整数不够2位就补上0  x是以16进制输出  hhx 表示只输出两位  
  11.     printf ("%02hhx %02hhx %02hhx %02hhx\n", un .a [0], un. a [1],un . a[2], un .a [3]);  
  12.     return un . a[0];  
  13. }  
  14.   
  15. int main(void)  
  16. {  
  17.     if(check()==1)  
  18.         printf("小端模式存储!\n");  
  19.     else  
  20.         printf("大端模式存储!\n");  
  21.     return 0;  
  22. }  


输出结果:
01 00 00 00
小端模式存储! 阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐