【IP地址の乾坤大挪移】C语言实现“IP地址/数字”互转

111 阅读1分钟

 环境:

vs2008可以运行。

demo:

简单演示下ip地址与整数互转。

注意ip顺序问题。保证一致即可。

code:

#include <stdio.h>

//demo
//ip 10.67.83.11
//  172184331


void main()
{
    ///* 待转化的整数IP */
    unsigned  int  IP1_Addr,IP2_Addr;
    IP1_Addr = 172184331;
    IP2_Addr = 172184331;

    // 法1:提取IP:位移操作 
    int addr1_1 = IP1_Addr >> 24;        // 提取第一部分IP地址
    IP1_Addr = IP1_Addr << 8;
    int addr1_2 = IP1_Addr >> 24;        // 提取第二部分IP地址 
    IP1_Addr  = IP1_Addr << 8;
    int addr1_3 = IP1_Addr >> 24;        // 提取第三部分IP地址 
    IP1_Addr  = IP1_Addr  << 8;
    int addr1_4 = IP1_Addr  >> 24;       // 提取第四部分IP地址 

    // 打印IP地址:结果为"10.67.83.11" 
     printf("IP地址(位移操作)为:%d.%d.%d.%d\n", addr1_1, addr1_2, addr1_3, addr1_4);

    // 法2:提取IP:求余取整 
    int addr2_4  = IP2_Addr % 256;       // 提取第一部分IP地址
    IP2_Addr  = IP2_Addr / 256;		
    int addr2_3 = IP2_Addr % 256;        // 提取第一部分IP地址
    IP2_Addr  = IP2_Addr / 256;		
    int addr2_2 = IP2_Addr % 256;        // 提取第一部分IP地址
    IP2_Addr = IP2_Addr / 256;		
    int addr2_1  = IP2_Addr % 256;       // 提取第一部分IP地址

    // 打印IP地址:结果为"10.67.83.11" 
    printf("IP地址(求余取整)为:%d.%d.%d.%d\n", addr2_1, addr2_2, addr2_3, addr2_4);


    ///********************** 字符串IP转整数就比较简单了 ***************************/

    //待转换字符串IP 
    //char * IP_Addr = "10.67.83.11";

    //提取4部分整数:提取方法很多这里省略
    int addr_1 = 10;
    int addr_2 = 67;
    int addr_3 = 83;
    int addr_4 = 11;
   
    unsigned long IP_Int =  (addr_1 * 256 * 256 *256) +(addr_2 * 256 * 256) + (addr_3 * 256) + addr_4;

    printf("整数IP地址为:%ld\n", IP_Int);

}

分享:

另分享一个在线转ip地址与整数的。临时可以用用。

www.bejson.com/convert/ip2…

支持:

欢迎关注公众号  谁吃薄荷糖,主要记录日常中觉得有意思的事情以及分享开发实践,保持深度和专注度,喜欢的点击右下角的再看哦。

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3cade71eb72c41b4a7dcb60cf53215eb~tplv-k3u1fbpfcp-zoom-1.image

\