zoukankan      html  css  js  c++  java
  • 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;

      }

        

    }

  • 相关阅读:
    delphi利用qdac qworker计划任务
    delphi libssh2 无法立即完成一个非阻止性套接字操作
    线程池底层原理
    【spring源码分析】二、Spring扩展点的归总
    【spring源码分析】一、spring Refresh流程
    Spring中常用的类
    设计模式-proxy
    SpringAOP
    SpringIOC
    难受,nginx worker进程内存持续飘升!
  • 原文地址:https://www.cnblogs.com/xqc123/p/12356073.html
Copyright © 2011-2022 走看看