大小端字节序
2015-08-29 10:45
260 查看
整合网上信息以及书上信息:
现代CPU的累加器一次都能至少装载4个字节,那么4字节在内存中的排列顺序将影响他被累加器装载成的整数的值。这就是字节序的问题。
机器的字节序分为大小端序两种字节序。大端字节序是指低地址存储高位信息,而高地址存储低位信息;小端字节序是指低地址存储低位信息,高地址存储高位信息。
PC一般采用小端字节序(栈不是),小端字节序的好处是,方便进行四则运算。
网络编程和服务器一般采用大端字节序,大端字节序的好处是,方便在低地址出就判断正负数。
判断机器字节序的方法有两种:
1,利用联合体
union{
short value;
char b;//如果不希望丢失字节,可以char b[sizeof(short)];
}test;
test.value=0x0102;
if(test.b==1) cout<<"big endian";//if(test.b[0]==1&&test.b[1]==2).....
else if(test.b==2) cout<<"little endian";
2,利用指针
int a=0x01020304;
char *p=(char *)&a;//强转会丢失字节
if(*p==1) cout<<"big endian";
else if(*p==4) cout<<"little endian";
现代CPU的累加器一次都能至少装载4个字节,那么4字节在内存中的排列顺序将影响他被累加器装载成的整数的值。这就是字节序的问题。
机器的字节序分为大小端序两种字节序。大端字节序是指低地址存储高位信息,而高地址存储低位信息;小端字节序是指低地址存储低位信息,高地址存储高位信息。
PC一般采用小端字节序(栈不是),小端字节序的好处是,方便进行四则运算。
网络编程和服务器一般采用大端字节序,大端字节序的好处是,方便在低地址出就判断正负数。
判断机器字节序的方法有两种:
1,利用联合体
union{
short value;
char b;//如果不希望丢失字节,可以char b[sizeof(short)];
}test;
test.value=0x0102;
if(test.b==1) cout<<"big endian";//if(test.b[0]==1&&test.b[1]==2).....
else if(test.b==2) cout<<"little endian";
2,利用指针
int a=0x01020304;
char *p=(char *)&a;//强转会丢失字节
if(*p==1) cout<<"big endian";
else if(*p==4) cout<<"little endian";
相关文章推荐
- xss小试
- logback 配置
- jquery制作拉开帷幕特效
- 获取系统环境变量: ACE_OS::getenv
- SDUT 3304 选课大作战
- 关于UNICODE VC项目二三事
- Spring-事件体系
- 【权值初始化+有条件的MST】hdu 1875 畅通工程再续
- OEL7.1安装oracle 12c简单步骤
- Dancing Links DLX
- netty5学习笔记-内存池3-PoolChunkList
- 重载引用参数(c++ primer plus -6th)
- 全国省市区数据库
- 微信公众号网页授权获取用户基本信息
- netty5学习笔记-内存池3-PoolChunkList
- Dancing Links DLX
- poj 2186 Popular Cows 【强连通分量Tarjan算法 + 树问题】
- ACM学习-匈牙利匹配
- JNI make文件
- 第一天