字节序

字节序,顾名思义字节的顺序,再多说两句就是大于一个字节类型的数据在内存中的存放顺序(一个字节的数据当然就无需谈顺序的问题了)。其实大部分人在实际的开发中都很少会直接和字节序打交道。唯有在跨平台以及网络程序中字节序才是一个应该被考虑的问题。
在所有的介绍字节序的文章中都会提到字节序分为两类:Big-Endian和Little-Endian,引用标准的Big-Endian和Little-Endian的定义如下:
a) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
b) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
c) 网络字节序:TCP/IP各层协议将字节序定义为Big-Endian,因此TCP/IP协议中使用的字节序通常称之为网络字节序。
 
测试字节序的代码:
#include <stdio.h>
#include <string.h>

void main() {
  int i = 0x12345678;
  if(*(char *)&i ==0x12)
    printf("Bigendian\n");
  else if(*(char *)&i ==0x78)
    printf("LIttleendian\n");
} 

运行在我的笔记本上,操作系统是ubuntu14.04,结果是 Littleendian.

 

posted @ 2015-03-23 17:12  Magnum Programm Life  阅读(210)  评论(0编辑  收藏  举报