zoukankan      html  css  js  c++  java
  • IP地址转换函数

    通常,人们习惯用可读性好的字符串来表示IP,比如用点分十进制字符串表示IPv4,以及用十六进制字符串表示IPv6地址。但在编程中我们需要把它们转换成整数(二进制)才能使用。而记录日志则相反,我们要把整数表示的IP地址转换成可读的字符串

    #include<arpa/inet.h>
    #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        in_addr_t t = inet_addr("127.0.0.1");  // change net order
        struct in_addr addr;
        memcpy(&addr, &t, 4);
        char* ip = inet_ntoa(addr);  // net order---> dot split
        printf("%s
    ", ip);
    
        in_addr_t t2 = inet_addr("127.0.0.2");  // change net order
        struct in_addr addr2;
        memcpy(&addr2, &t2, 4);
        char* ip2 = inet_ntoa(addr);  // net order---> dot split
        printf("%s
    ", ip2);
    }

    in_addr_t其实就是32位无符号整数,需要注意的是,inet_ntoa是不可重入的,该函数内部用一个静态变量存储转化结果,函数的返回值指向该静态内存

    从上面程序的结果就能揭示其不可重入性,上面输出两个127.0.0.1。

  • 相关阅读:
    接口自动化HttpRunner框架流程简介
    常用接口自动化工具框架
    接口自动化 python+request
    locust安装(性能测试)
    mac查看python的安装路径
    LA4119
    UVa11361
    求逆元
    欧拉phi函数
    快速幂
  • 原文地址:https://www.cnblogs.com/lfri/p/12743972.html
Copyright © 2011-2022 走看看