大端字节序和小端字节序
将低序字节存储在起始地址(低字节存储在内存低地址),称为小端字节序
比如0x12345678,内存中从低到高分别存储12,34,56,78
将高序字节存储在起始地址,称为大端字节序
比如0x12345678,内存中从低到高分别存储78,56,34,12
详细资料可参考:
[dm href=’http://www.cnblogs.com/xiehy/archive/2010/11/25/1887779.html’]链接地址[/dm]
主机字节序和网络字节序
在每个TCP分节钟都有16位的端口号喝32位的IPv4地址。
发送协议栈喝接受协议栈必须就这些多字节字段各个字节的传送顺序达成一致。
网际协议使用大端字节序来传送这些多字节整数。
但,我们可以在需要的时候,使主机字节序和网络字节序之间进行互转,以下是转换函数:
#include <netinet/in.h> unit16_t htons(unit16_t host16bitvalue) unit32_t htonl(unit32_t host32bitvalue) unit16_t ntohs(unit16_t net16bitvalue) unit32_t ntohs(unit32_t net32bitvalue)
其中h代表host,n代表network,s代表short,l代表long
s为16,long为32