两种方式判断内存的大小端存储方式

1. 目的:判断ubuntu操作系统的内存属于大端还是小端存储。

2. 源代码

/* 
两种方法判断大小端(处理器取值时的字节序):
1.字符指针
2.联合体
*/

/* 法1 */
#if 1
#include <stdio.h>

int main(void)
{
      int word = 0x12345678; // 注意低地址开始第一个元素值不能大于和等于1000,否则为负数。若要不受限制,可设为unsigned int

      //1、先拆数
      //char a = (char)word; //此语句也输出78,但不能输出其他3字节地址内容。不确定可否行得通
      char *str = (char *)&word;
      char *str1 = (char *)&word + 1;
      char *str2 = (char *)&word + 2;
      char *str3 = (char *)&word + 3;

      //2、存起来
      printf("str=%x\n", *str);
      printf("str1=%x\n", *str1);
      printf("str2=%x\n", *str2);
      printf("str3=%x\n", *str3);
      //3、比较
      if (*str == 0x78)
        printf("little endian\n");
      else 
        printf("big endian\n");

      return 0;
}

#else
/* 法二:从网上面试题学到的 */
#include <stdio.h>


int main (void) {
      union w { 
        int a;
        char b;
      } c;
      c.a = 1;
      if (c.b == 1)
        printf ("little endian\n");
      else
        printf ("big endian");


      return 0;
}
#endif

 

posted @ 2017-03-04 19:58  Kevin王银  阅读(614)  评论(0编辑  收藏  举报