C语言编写程序的大小端问题

有时候,用C语言写程序需要知道大端模式还是小端模式,,由于寄存器大于一个字节(8bit),就会存在一个字节安排的问题,例如(16bit)的short型,(32bit)的int型,具体需要看具体的编译器,所谓大端模式,即高位字节存放在低地址上,低位字节放在高地址上,而小端模式则是低位字节放在低地址上,高位字节放在高位字节上;例如大端模式:a=0x1234,存放地址是0x000001,这时0x12(高位字节)存放在0x000001上,而0x34(低位字节)存放在0x000002上(相对0x000001来说是高地址);而小端模式则是a=0x1234,存放地址是0x000001,这时0x34(低位字节)存放在0x000001上,而0x12(高位字节)则存放在0x000002上(相对0x000001来说是高地址)

C语言判断大小端:

方法1:

bool isBigEndian()

{

  a = 0x1234;

  char *b = &a;

  if(b == 0x12)//0x12表示高位字节-----存放在低地址上

  {

    printf("big endian");

    return true;

  }

  return false;

}

方法2:

bool isBigEndian()

{

  union NUM

  {

    int a;

    char b;

  }num;

  num.a = 0x1234;

  if(num.b == 0x12)

  {

    printf("big endian");

    return true;

  }

  else if(num.b == 0x34)

  { 

    printf("small endian");

    return false;

  }

    

}

posted @ 2020-02-24 14:08  世界不应如此单调  阅读(414)  评论(0编辑  收藏  举报