0
点赞
收藏
分享

微信扫一扫

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");   
 
       }   
 
}

举报

相关推荐

0 条评论