【Linux、C++】字节序转换函数 ntohs()、ntohl()、htons()、htons()和inet_addr、inet_pton()的解析(cpp编程 ip地址)

在C/C++写网络编程的时候,需要使用到网络字节序与主机字节序之间转换的函数,所以我就来总结一下。
另外写项目的时候,在这快的只是很混很混,最终导致程序崩溃,所以来总结一下常用的网络字节序的转换的接口

网络字节序:不同的CPU,在向内存中保存数据的方式也可能不一样,分为两种:大端序和小端序。大端序是指高地址先存,而小端序是指低地址先存。若服务端与客户端的CPU标准不同,那么传递的数据也就不一致了。所以为了解决这个问题,就约定了一个统一的方式:统一为大端序,这种约定我们成为网络字节序。所以要先把数据转换为大端序格式再进行传输

如: 0x12345678

大端序下的传输顺序
0x12345678
小端序下得传输顺序
0x78564512

所以就出现了字节序的转换接口

unsigned short ntohs(unsigned short);  将16位的网络字节序转换为主机字节序
unsigned long ntohl(unsigned long);    将32位的网络字节序转换为主机字节序
unsigned short htons(unsigned short ); 将16位的主机字节序转换为网络字节序
unsigned long  htonl (unsigned long);  将32位的主机字节序转换为网络字节序

字节序转换接口

h代表的是主机字节序(小端字节序)类型,n代表的是网络字节序(大端字节序) ,s代表short类型,l代表long类型(4字节)。

ntohs: “Network to Host Short”
ntohl: “

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值