#include union node { int a; char b[4]; }; int main() { union node t; t.a=1; printf("%d\n",t.b[0]); printf("%d\n",t.b[1]); printf("%d\n",t.b[2]); printf("%d\n",t.b[3]); } 把int的每个字节读出来。要是第一个字节为0证明是大端模式 ...
写一个函数判断系统是大端还是小端。若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1.
大端格式:在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中
小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节
联合体union的存放顺序是所有成员都从低地址开始存放。
Int checkCPU ()
{
Union w
{
Int a;
Char b;
}c;
c.a=1;
return (c.b==1);
}
计算机的一个int型数据是用多个字节表示的,如果在内存中存放时标称该数据的地址中存放的是数据的最低字节,就叫小端机,反之把高字节存放在标称地址中的则称为大端机。所以可以定义一个int变量,将其地址强制为char *型地址,检测该地址中的数据若是int变量的最低字节,则是小端机,反之则为大端机。代码如下:
//#include "stdafx.h"//If the vc++6.0, with this line. #include "stdio.h" int main(void){ int n=1; printf(*(char *)&n ? "小端\n" : "大端\n"); return 0; }