一、概念:字节顺序是指在一个字中各个字节的顺序,处理器在对字进行取值时,既可能将最低有效位所在的字节当做第一个字节,也可能将其当做最后一个字节;
如果最高有效位所在的字节放在低字节位置上,其他字节依次放在高字节位置上,那么称为高位优先(big-endian);
如果最低有效位所在的字节放在高字节位置上,其他字节依次放在低字节位置上,那么就称作低位优先。
二、如何判断大小端?
int x = 1;
if( *( char* )&x == 1 )
printf( "big-endian\n" );
else
printf( "small-endian\n" );
这个方法在用户空间和内核空间都可以使用。
三、linux内核中的表示?
linux内核会根据机器使用的字节顺序在它的<asm/byteorder.h>中定义__BIG_ENDIAN或者__LITTLE_ENDIAN;
<asm/byteorder.h>从include/linux/byteorder/中包含了一组宏命令用户完成字节顺序之间的相互转换。