大小端测试程序

大端字序节和小端自序节就是我们所说的大端模式和小端模式 小端字节序就是低地址存储数的低位字节。大端字节序正好相反。 举个例子。加入有 int a = 0x01000002; 假设变量a在内存的地址为:0x00000001;//这只是为了理解,真实的程序中,是不会存储到这的。 a占4个字节。它是int类型。 也就是0x00000001 0x00000002 0x00000003 0x00000004这4个内存地址。 小端字节序会这样存储。 0x00000004 0x01 0x00000003 0x00 0x00000002 0x00 0x00000001 0x02 大端字节序则会如下存储 0x00000004 0x02 0x00000003 0x00 0x00000002 0x00 0x00000001 0x01 这个题目是在《linux_C编程一站式学习》中的题目. 题目:编写一个程序,测试运行它的平台是大端字节序还是小端字节序。 这个题目可以利用 union一个特性求解。 就是共用体中成员变量共享一个地址。 例如: union { char a; int b; } s; 这s.a和s.b的地址是一样的,只是变量大小不同。 根据这个性质写出下面程序: #include int main(int argc, char** argv) { union { char a; int b; } s; s.b =0x02000001; printf("%X/n", (int)s.a); return 0; } 如果是小端字节序则,输出为1. 否则为2. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 其实这个问题还可以用强制转换来完成,就是将一个int类型到数据转换为char类型到数据,看输出 #include void main() { int i = 0x02000001; char *pch = (char *) &i; printf("%X/n",*pch); }

你可能感兴趣的:(大小端测试程序)