1. 大端字节序和小端字节序
大端字节序:地址低位存储值的高位,地址高位存储值的低位;
小端字节序:地址低位存储值的低位,地址高位存储值的高位;
以数字:0x12345678为例,地址用相对地址,表示由低到高。
地址: | 01 | 02 | 03 | 04 |
值: | 0x12 | 0x34 | 0x56 | 0x78 |
地址: | 01 | 02 | 03 | 04 |
值: | 0x78 | 0x56 | 0x34 | 0x12 |
TCP/IP协议栈使用 大端字节序。
2. 判断
利用union结构,其存放顺序特点是
所有成员都从低地址开始存放。
#include <iostream>
using namespace std;
int check(){
union w{
int a;
char b;
}c;
c.a=1;
return c.b==1;
}
int main(){
bool ret=check();
if(ret){
cout<<"Little_Endian\n";
}else
cout<<"Big-Endian\n";
}
对于int型a=0x00000001,当处理器是低字节序时,0x01才会在地址的低字节区域,此时b==1.