本文操作的使用软件是VS2010。采用语言是C语言。
1.字节存储顺序
多字节数据的各字节在微机中的存放顺序有小端(Little Endian)和大端(Big Endian)之分。Intel体系芯片使用小端,IBM的Power PC使用大端。
例如,将0x12345678写入到1000h开始的内存中,结果如图。
地址 |
小端方式 |
大端方式 |
1000h |
78H |
12H |
1001h |
56H |
34H |
1002h |
34H |
56H |
1003h |
12H |
78H |
测试实例,可以判断自己主机的字节存储顺序。执行结果如下图
#include "stdio.h"
void main(void)
{
int i,*pi;
i=0x12345678;
pi=&i;
printf("pi=%X,*pi=%X\n",pi,*pi);
char *pc=(char*)pi;
printf("%X %X %X %X\n",*pc,*(pc+1),*(pc+2),*(pc+3));
}
2.IP地址的表示形式
对于网络管理员或普通用户而言,IP地址常用点分法来表示。例如192.168.0.1。
在计算机中使用无符号长整数(unsigned long)来存储和表示IP地址,而且分为网络字节顺序(NBO,Network Byte Order)和主机字节顺序(HBO,Host Byte Order)两种格式。