主机字节序与网络字节序转换

小端字节序:即一个整数的高位字节存放在内存中的高位地址处,字节低位存放在内存中的低位地址处
大端序字节:与小端字节序刚好相反


现代的电脑多采用小端字节序,而Java的虚拟机采用大端字节序,采用网络的也是大端字节序
所以在网络传输中通常我们需要进行字节序的转换,否则接受网络数据的进程将不知道如何进行数据解析


Linux的系统环境下的Ç中:

#include<netinet/in.h>
//将长整形转换为网络字节序
unsigned long int htonl(unsigned long int hostlong);
//将短整形转换为网络字节序
unsigned short int htons(unsigned short int hostshort);
//将网络字节序转换为长整型主机字节序
unsigned long int ntohl(unsigned long int netlong);
//将网络字节序转换为短整型主机字节序
unsigned short int ntohs(unsigned short int netshort);

在网络通信中,长整型通常用来转换IP地址,短整型通常用来转换端口号(但任何格式化数据通过网络传输时都应该进行字节序转换);

发布了22 篇原创文章 · 获赞 18 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Skying_/article/details/83861896