摘要:本文主要向大家介绍了C/C++知识点的大端小端模式简单介绍及三种检测大小端存储的方法,通过具体的实例让大家了解,希望对大家学习C/C++知识点有所帮助。
本文主要向大家介绍了C/C++知识点的大端小端模式简单介绍及三种检测大小端存储的方法,通过具体的实例让大家了解,希望对大家学习C/C++知识点有所帮助。
大端模式:是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址端。
小端模式,是指数据的高字节保存在内存的高地址中,低位字节保存在在内存的低地址端。
比如 一个变量x的十六进制表示为 0x01 23 45 67,
如果是大端存储 则是这样存储的
高地址--------->低地址
67 45 23 01 数据的高位 放在低地址 低位放在高地址
而小端模式 是这样
01 23 45 67 数据的低位 放在低地址 高位放在高地址
大小端模式的检测(环境 win7 vs2008)
方法(1)利用利用共用体几个不同的变量共同占用一段内存的性质输出第一个字节
[cpp] view plain copy print? 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 print? 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 print? 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
小端模式存储!
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号