http://www.cnblogs.com/52php/p/6114643.htmlphp
所谓大端就是指高位值在内存中放低位地址,所谓小端是指低位值在内存中放低位地址。好比 0x12345678 在大端机上是 12345678,在小端机上是 78564312,而一个主机是大端仍是小端要看CPU类型以及运行在上面的操做系统。同一款CPU在不一样的操做系统使用的大小端状况是不一样的。固然咱们一般使用的 x86 + windows是小端。html
测试大小端通常使用 union的特性。union是一个联合体,全部变量公用一块内存,只是在不一样的时候解释不一样。其在内存中存储是按最长的那个变量所须要的位数来开辟内存的windows
#include <stdio.h>
测试
#include <stdbool.h>
union
{
int
number;
char
s;
} test;
bool
testBigEndin() {
test.number = 0x01000002;
return
(test.s == 0x01);
}
int
main(
int
argc,
char
**argv) {
if
(testBigEndin()) {
printf
(
"big"
);
}
else
{
printf
(
"small"
);
}
}
个人 Mac输出: smallspa
其中 union的实际内存长度是int,即一个字,在32位机上是32位。而char是一个Byte(8位),只会取第一个低地址字节。因此它的值能够用来判断大小端。操作系统