大端和小端(网络字节序和主机字节序)
大端(Big Endian):即网络字节序。
小端(Littile Endian):即主机字节序。
记忆方式:网络的范围很大,所以大端是网络字节序。
大端方式将高位存放在低地址,小端方式将低位存放在高地址。
采用大端方式进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。
如果将一个32位的整数0x12345678存放到一个整型变量(int)中,这个整型变量采用大端或者小端模式在内存中的存储由下表所示。
为简单起见,本书使用OP0表示一个32位数据的最高字节MSB(Most Significant Byte),使用OP3表示一个32位数据最低字节LSB(Least Significant Byte)。
---------------------------
地址偏移 大端模式 小端模式
0x00
0x01
0x02
0x03
可用如下代码 测试
int i=0x12345678;
char*p = (char *)&i;
if(*p == 0x78)
{
printf("Litle endian\n");
}
printf("p=%p\n",&p);//当前指针变量的值(指向的地址)
p++;//指针自增
printf("p++之后,p=%p\n",&p);//验证指针自增以后的值(重新指向的地址)
if(*p == 0x56)
printf("Litle endian\n");
printf("sizeof(p)=%lu \n",sizeof(p));
//测试指针变量所占的字节数,in fact,在win32平台上,任何类型的指针变量所占的字节数均为4.
p =NULL;

被折叠的 条评论
为什么被折叠?



