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
原文:http://www.cnblogs.com/KevinWong777/p/6502492.html