endian
就是字节顺序的意思
big-endian
现在在纸上书写阿拉伯数字198,我们肯定是先写最高位1,直到写到最低位8,如果让计算机采用这个顺序存放数据到内存中,也就是先在低位起始地址放最高位1,然后写上9,最后是8.这样的顺序就是big endian.
little-endian
与其顺序相反的是,低位地址存放低位数字,高位地址存放高位数字。这种最合乎计算机内存地址的写法就是little endian.
如果没有明白我说的,看下面的表。
Endian | First byte (lowest address) |
Middle bytes | Last byte (highest address) |
Notes |
---|---|---|---|---|
big | most significant | ... | least significant | Similar to a number written on paper (in Arabic numerals as used in most Western scripts) |
little | least significant | ... | most significant | Arithmetic calculation order (see carry propagation) |
下面的函数帮助判断是big-endian还是little-endian. 很简单,取最低位字节的整数,比较是不是最低位数字ff,是就是little-endian.
bool IsLittleEndian(){
short int x = 0x00ff;
char* p = (char*)&x;
return (short int)p[0] == -1;
}
另外根