字节顺序的大端与小端

 一个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
  ",sizeof(char) );
    if(sizeof(short)==2)
    {
        if((un.c[0]==1) && (un.c[1]==2) )
        {
            printf("big-endian
" );
        }
        else if((un.c[0]==2) && (un.c[1]==1) )
        {
            printf("little-endian
");
        }
        else
        {
            printf("unknown
");
        }
    }
    else
    {
        printf("sizeof(short)== %lu
",sizeof(short));
    }
    return 0;
}

  参考:Unix网络编程

原文地址:https://www.cnblogs.com/Zhang-Shangyu/p/5317942.html