大小端字节序

整合网上信息以及书上信息:


现代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";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值