您的位置:首页 > 其它

判断一个机器使用的是大端存储还是小端存储

2016-08-06 10:44 603 查看
本文节选自《UNIX网络编程》。

考虑一个16位整数,它由两个字节组成。内存中存储这两个字节有两种方法:一种是将低序字节存储在起始地址,这称为小端(little-endian)字节序;另一种方法是将高序字节存储在起始地址,这称为大端(big-endian)字节序。

下面的程序可以判断一台机器是大端存储还是小端存储。

#include<stdio.h>

int main(int argc, char** argv){

//联合(union)中,所有成员引用的是内存中相同位置,
//由具体成员类型决定了这些位如何被解释
union{
short s;
char c[sizeof(short)];
} un;

un.s = 0x0102; //16进制数中,02是低序字节,01是高序字节

if(sizeof(short)==2){
if(un.c[0]==1 && un.c[1]==2){
printf("big-endian\n");
}else if(un.c[0]==2 && un.c[1]==1){
printf("little-endian\n");
}else{
printf("unknow\n");
}
}else{
printf("sizeof(short) = %d\n",sizeof(short));
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: