字节顺序的大端与小端
一个16位的整数,由两个字节组成。内存中存储这个两个字节有两种方法:一种是将低位字节存储在起始地址,这种方式称为小端(little-endian)字节序;另外一种是将高位字节存储在起始地址,这种方式称为大端(big-endian)字节序。
在网络编程、系统设计、汇编中可能会涉及到大端小端问题。
下面一个简单C程序可以判断出你所使用的机器是大端还是小端
#include<stdio.h> int main(int argc, char const *argv[]) { union //采用union的以不同方式表示数据 { short s; char c[sizeof(short)]; }un; un.s=0x0102; printf("char is %lu byte\n ",sizeof(char) ); 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("unknown\n"); } } else { printf("sizeof(short)== %lu\n",sizeof(short)); } return 0; }
参考:Unix网络编程