C/C++ 关于大小端模式
2016-05-14 13:51
274 查看
大端模式: 数据的高字节存在低地址 数据的低字节存在高地址
小端模式: 数据的高字节存在高地址 数据的低字节存在低地址
![](http://img.blog.csdn.net/20160514134332765?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
如图,i为int类型占4个字节,但只有1个字节的值为1,另外3个字节值为0;取出低地址上的值,当其为1时则为小端模式,为0时为大端模式。
![](http://img.blog.csdn.net/20160514134641100?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20160514134826773?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
此时说明该编译器为小端模式。
小端模式: 数据的高字节存在高地址 数据的低字节存在低地址
如图,i为int类型占4个字节,但只有1个字节的值为1,另外3个字节值为0;取出低地址上的值,当其为1时则为小端模式,为0时为大端模式。
//大小端模式的判断 //方法一:利用联合体所有成员的起始位置一致, //对联合体中的int类型赋值,然后判断联合体中char类型的值的大小 void SysCheck() { union IsLitte_Endian { int i; char c; }; IsLitte_Endian Check; Check.i = 1; bool Flag=Check.c == 1; //Flag为true表示是小端模式,Flag为false表示为大端模式,此时Flag为true。 return; }
//方法二:利用强制类型转换判断 //与共用体判断类似 bool IsLitte_Endian() { int Wvar = 0x12345678; short *Pvar = (short*)&Wvar; return !(0x1234 == Pvar[0]); }
此时说明该编译器为小端模式。
相关文章推荐
- C++实现“简单计算器”
- C语言_左移(<<)和右移(>>)
- c/c++ 参数传递 - 数组
- Oxford building dataset数据集计算正确相关图像ground truth的C++代码
- C++ 传递对象---用值传递对象
- 1.C++学习笔记:内存模型
- [容器]STL之set容器详解
- C++日记——浅谈继承
- C++名称空间
- c++文件的读取
- 如何成为一名高级C++程序员
- 【LeetCode】290. Word Pattern
- C++重载重写重定义
- c++开发ocx入门实践三--基于opencv的简易视频播发器ocx
- C++——中的虚函数(Virtual function)
- C++纯虚函数作为接口类举例
- C语言实现二叉树的递归遍历与非递归遍历
- 最小二乘法及C++实现
- C++多态
- c++ 内存申请释放,构造函数,析构函数,执行顺序