大小端转换函数

套接字-Socket
来源: 爱编程的大丙

#include <arpa/inet.h>
// u:unsigned
// 16: 16位, 32:32位
// h: host, 主机字节序
// n: net, 网络字节序
// s: short
// l: int

// 这套api主要用于 网络通信过程中 IP 和 端口 的 转换
// 将一个短整形从主机字节序 -> 网络字节序
uint16_t htons(uint16_t hostshort);	
// 将一个整形从主机字节序 -> 网络字节序
uint32_t htonl(uint32_t hostlong);	

// 将一个短整形从网络字节序 -> 主机字节序
uint16_t ntohs(uint16_t netshort)
// 将一个整形从网络字节序 -> 主机字节序
uint32_t ntohl(uint32_t netlong); 

IP地址转换

//主机字节序的IP地址转换为网络字节序
//主机字节序的IP是一个字符串,网络字节序IP是一个整形
int inet_pton(int af, const char *src, void *dst);

1. af: 地址族(IP地址的家族包括ipv4和ipv6)协议

AF_INET: ipv4格式的ip地址

AF_INET6: ipv6格式的ip地址

2. src: 传入参数, 对应要转换的点分十进制的ip地址: 192.168.1.100

3. dst: 传出参数, 函数调用完成, 转换得到的大端整形IP被写入到这块内存中

返回值:成功返回1,失败返回0(参数2有无效字符)或者-1(参数1无效地址)

#include <arpa/inet.h>
// 将大端的整形数, 转换为小端的点分十进制的IP地址        
const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);

1. af: 地址族协议

AF_INET: ipv4格式的ip地址

AF_INET6: ipv6格式的ip地址

2. src: 传入参数, 这个指针指向的内存中存储了大端的整形IP地址

3. dst: 传出参数, 存储转换得到的小端的点分十进制的IP地址

4. size: 修饰dst参数的, 标记dst指向的内存中最多可以存储多少个字节

返回值: 成功: 指针指向第三个参数对应的内存地址, 通过返回值也可以直接取出转换得到的IP字符串

失败: NULL

// 点分十进制IP -> 大端整形
in_addr_t inet_addr (const char *cp);

// 大端整形 -> 点分十进制IP
char* inet_ntoa(struct in_addr in);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值