Unix网络编程一之判断字节序列

1320阅读 0评论2013-08-27 double_lq
分类:LINUX

 内存中存储数据有两种方法:一种低字节序列存储在起始地址,这称为小端字节序,另一种方法是将高字节序列存储在起始地址,这称为大端字节序。
术语“小端”和“大端”表示多字节值的哪一端(大端或小端)存储在改值的起始地址。

  仿造书上page65页的例子,写的代码如下:
    
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int main(int argc,char **argv)
  4. {
  5.     union{
  6.       short s;
  7.       char c[sizeof(short)];
  8.     }un;


  9.     un.s=0x0102;
  10.     //printf("%s",CPU_VENDOR_OS);
  11.     if(sizeof(short)==2)
  12.     {
  13.        if(un.c[0]==1 && un.c[1]==2)
  14.          printf("big_endian\n");
  15.        else if(un.c[0]==2 && un.c[1]==1)
  16.        {
  17.          printf("little_endian\n");
  18.          printf("sizeof(short)=%d\n",sizeof(short));
  19.        }
  20.        else
  21.          printf("unkown\n");
  22.     }
  23.     else
  24.      {
  25.        printf("sizeof(short)=%d\n",sizeof(short));
  26.      }

  27.      exit(0);
  28. }

运行结果现实我的机器上是小端字节序,short占的字节为2.
上一篇:冒泡排序的三种实现方法
下一篇:C语言字符串格式化显示