网络编程基础(2)-如何进行字节序转换?(保姆级教程)

2023-12-27 18:32:35

上一篇文章详细的介绍了在网络编程过程中为什么要进行字节序转换,以及为什么要统一使用大端字节序?想要了解的伙伴可以点击该链接https://blog.csdn.net/shnhe/article/details/135141058?spm=1001.2014.3001.5501。那么在这篇文章中我们将详细的介绍如何进行字节序转换。

俗话说的好,我们不生产知识,我们只是知识的搬运工。所以啦,大家觉得如何进行字节序转换呢,那当然是调用我们伟大的库函数啦哈哈。话不多说直接上库。

在使用字节序转换的函数时,需要先包含一个头文件:

#include<arpa/inet.h>

所使用的函数如下:

uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);

其中htonl中h代表host,为主机字节序的意思,n代表network,为网络字节序的意思,中间的to代表转换的意思,l代表的是32位长整数,一般对应的参数为IP地址。另外s代表的是16位短整数,一般对应的参数为端口号。

这里需要着重解释一下新词语主机字节序和网络字节序。网络字节序就是我们所讲的大端字节序,而主机字节序可能会分为两种情况:大端字节序和小端字节序。上述的字节序转换函数会自动对主机字节序进行检测,如果为小端字节序,那么就会转换为大端字节序,若为大端字节序,则不会转换(PS:因为在网络编程基础中统一要求使用大端字节序)。

好了这期干货就分享到这里啦,相信大家已经对字节序转换有了初步的了解,我会持续更新网络编程的一些基础知识,谢谢各位观众老爷的支持和观看,我们下一篇文章见!

文章来源:https://blog.csdn.net/shnhe/article/details/135142053
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。