zoukankan      html  css  js  c++  java
  • C语言判断大小端的几种方法

      在操作系统中,经常会用到判断大小端,很多面试题中也会经常遇到,以前的时候没有总结过,这里总结一下。

    以后用到了就直接可以用了。

      所谓的大小端,大致的解释意思就是:

    【大端模式】 CPU对操作数的存放方式是高地址存放低位,低地址存放高位。

    【小端模式】CPU对操作数的存放方式是高地址存放高位,低地址存放低位。

    大多数ARM处理器都是采用的小端模式,PowerPC是采用的大端模式,网络字节序是采用的大端模式。

      常用的有两种方式来判断大小端,一种是使用C语言中的联合体,具体代码如下:

    int checkCPU()
    {
    union w
    {
    int a;
    char b;
    }c;
    c.a = 1;
    return (c.b == 1); // 小端返回TRUE,大端返回FALSE
    }
    

      其中,linux内核中就是使用这部分的代码,代码如下所示:

    static union { char c[4]; unsigned long mylong; } endian_test = {{ 'l', '?', '?', 'b' } };
    #define ENDIANNESS ((char)endian_test.mylong)
    

      另外一种就是使用指针的方式,具体代码如下所示:

      void checkPoint(void)
    
      {
    
          int i = 1;    
         unsigned char *pointer;    
    
         pointer = (unsigned char *)&i;    
    
         if(*pointer)    
    
         {    
    
                   printf("litttle_endian");    
    
             }    
    
             else    
    
             {    
    
                    printf("big endian/n");    
    
             }    
    
      }
    

      

  • 相关阅读:
    在 ASP.NET 中实现会话状态的基础
    STL 备忘录
    ASP.NET开发环境的详细配置
    COFF 文件的格式
    mbstowcs and MultiByteToWideChar
    苦心人天不负
    CString GetBuffer() and ReleaseBuffer()
    c语言的函数指针
    如何架设流媒体服务器(2)
    再谈从vc6迁移到vs2005
  • 原文地址:https://www.cnblogs.com/dylancao/p/8472879.html
Copyright © 2011-2022 走看看