美文网首页
C语言字节序转换API

C语言字节序转换API

作者: 二进制人类 | 来源:发表于2022-09-16 19:46 被阅读0次

主机字节序转网络字节序

#include <arpa/inet.h>
uint32_t htonl(uint32_t hostlong);        /* 无符号的32位整型数据的转换 */
int16_t htons(uint16_t hostshort);        /* 无符号的16位整型数据的转换 */
/*
功能:htons和htonl都是实现将主机字节序数据转换为网络字节序数据
参数:hostlong和hostshort标识主机字节序数据
返回值:网络字节序数据
*/

网络字节序转主机字节序

#include <arpa/inet.h>
uint32_t ntohl(uint32_t netlong);        /* 无符号的32位整型数据的转换 */
uint16_t ntohs(uint16_t netshort);       /* 无符号的16位整型数据的转换 */ 
/*
参数:netlong和netshort标识网络字节序数据
返回值:主机字节序数据
*/

将字符串IP地址转换为网络字节序的整型数据

#include <arpa/inet.h>
int inet_pton(int af, const char *src, void *dst);
/*
    参数1:af表示地址协议族
        AF_INET:    基于IPV4协议族的IP地址
        AF_INET6:   基于IPV6协议族的IP地址
    参数2:src指针指向的字符串IP地址;
    参数3:det目标指针用来返回转换接收的整型数据(网络字节序的IP地址);
返回值:
    装换成功返回1;af指定地址协议族中没有找到IP则返回0,否则失败返回-1
    */

将网络字节序数据转换为主机字符串IP地址

#include <arpa/inet.h>
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:传递网络字节序IP地址的整型数据存储空间的地址;
    参数3:返回主机字节序IP地址,
    参数4:表示参数3所对对应空间的大小
        size可以使用宏定义:
            INET_ADDRSTRLEN    //ipv4空间大小;
            INET6_ADDRSTRLEN   //ipv6空间大小;
返回值:成功返回dst的指针,失败返回NULL且修改errno的值。
*/

网络字节序IP和主机字节序IP转换其它API

#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int inet_aton(const char *cp, struct in_addr *inp);        
//功能: 将cp指向的主机字节序IP地址转换为网络字节序的IP地址存储在结构体指针inp指向的空间中

in_addr_t inet_addr(const char *cp);
//功能:将cp指向的主机字节序IP地址转换为网络字节序的IP地址通过函数的返回值返回 

in_addr_t inet_network(const char *cp);
//功能:将cp指向的主机字节序IP地址转换为网络字节序的IP地址通过函数的返回值返回   

char *inet_ntoa(struct in_addr in);
//功能:将网络字节序IP地址转为主机字节序的字符串IP地址通过返回值返回。  

struct in_addr inet_makeaddr(in_addr_t net, in_addr_t host);

in_addr_t inet_lnaof(struct in_addr in);

in_addr_t inet_netof(struct in_addr in);

相关文章

网友评论

      本文标题:C语言字节序转换API

      本文链接:https://www.haomeiwen.com/subject/ctyeortx.html