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。

  • 相关阅读:
    Service Mesh vs SideCar
    云原生应用
    js 中继承的几种方式
    js 中call,apply,bind的区别
    js中的原型
    ES6 中的let 声明变量
    react native 中的redux
    css 中的伪类选择器before 与after
    js中数组遍历的几种方法及其区别
    js中一些常见写法的含义
  • 原文地址:https://www.cnblogs.com/lfri/p/12743972.html
Copyright © 2011-2022 走看看