inet_pton inet_ntop inet_aton htonl

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

#include <string.h> // memory zero

#include <sys/types.h>
#include <sys/socket.h> // AF_INET
#include <arpa/inet.h> // inet_* 头文件
#include <netinet/in.h> // struct sockaddr_in

int main(int argc, char **argv)
{
    char szIP[] = "192.168.88.130";
    struct sockaddr_in addr;
    memset(&addr, 0, sizeof(addr));
    
    // inet_pton
    int ret = inet_pton(AF_INET, szIP, &addr.sin_addr); // 将 字符串 转为 网络字节序
    printf("ret = %d.
", ret); // ret = 1
    printf("addr.sin_addr: %2X
", addr.sin_addr); // 8258A8C0
    printf("addr.sin_addr.s_addr: %2X
", addr.sin_addr.s_addr); // 8258A8C0

    unsigned long lip = 0x8258A8C0; // 主机序
    printf("lip: %2X
", lip); 

    // inet_ntop 二进制整数 -> 点分十进制
    char strTemp[20]; //存放点分十进制IP地址
    if( inet_ntop(AF_INET, (void*)&lip, strTemp, (socklen_t )sizeof(strTemp)) != NULL) // 网络字节序输出
        printf("strTemp = %s
", strTemp); // strTemp = 192.168.88.130
    
    // htonl
    lip = htonl(lip);
    printf("htonl(lip): %2X
", lip); // C0A85882 
    
    // inet_aton
    in_addr myin;
    ret = inet_aton(strTemp, &myin);
    printf("ret = %d, strTemp = %s, inet_aton:%2X", ret, strTemp, myin.s_addr); // 网络字节序输入 myin.s_addr = 8258A8C0

    
    getchar();

    return 0;    
}
原文地址:https://www.cnblogs.com/sylar-liang/p/4306750.html