对于数据的大小端,从宏观类型来看,这些都应该是被屏蔽的细节。
例1,
int i = 0x01020304;
printf( "%08x \n", i );
无论是在大端还是小端系统,它表示的值肯定是一样的和输出结果(即通过我们的阅读,由约定,比如从左到右一次表示最高位)肯定是一样的。
但是,当我们对类型进行分解,那么就需要知道是大端还是小端系统了。
例2,
char *si = (char*) &i;
for ( int j = 0; j < sizeof(i); ++j )
{
printf( "%02x,", si[j] )
}
这里的输出序列就和系统的大小端有关系了。
还有一种情况就是对单个字节进行操作,例如截取高四位,截取低四位。也需要考虑大小端的情况。
例3,
int i = 0x01020304;
char si = (char*) &i;
char up = si[0] & 0x01
char low = si[0] & 0x10 /(2*2*2*2);
printf( "%x, %x\n", up, low );
这里的up和low也和系统有关系的。
对于mac系统,它好像是小端系统。
所以只要是对数据的整体进行操作,那么大小端系统的结果应该是一样的。
例如,
int i = 1;
printf( "%08x\n", i);
输出都应该是 0x00000001, 其中1表示时数据的最低位。可以在系统中位于s[0](小端),或者s[3](大端)