【C语言】之整数 IP 和字符串 IP 之间的转换

概念

IP一般由32位整数组成,按每8位划分为4部分:255.255.255.255 该显示方式为字符串形式,而IP一般是以整数形式显示。下面通过位移和求余取整操作快速实现整数IP转换为字符串IP:

整数IP地址 unsigned int IP_Addr = 1713350848 转化为二进制为:01100110-00011111-10101000-11000000 根据8位划分得到结果为102-31-168-192,由于网络字节倒序的问题,实际IP为192.168.31.102


下面为整数IP和字符串IP之间转换的代码

    /* 待转化的整数IP */
    unsigned  int IP_Addr = 1713350848;
	
    /* 提取IP:位移操作 */
    int addr_1 = IP_Addr >> 24;        // 提取第一部分IP地址
    IP_Addr = IP_Addr << 8;
    int addr_2 = IP_Addr >> 24;        // 提取第二部分IP地址 
    IP_Addr  = IP_Addr << 8;
    int addr_3 = IP_Addr >> 24;        // 提取第三部分IP地址 
    IP_Addr  = IP_Addr  << 8;
    int addr_4 = IP_Addr  >> 24;       // 提取第四部分IP地址 

    /* 提取IP:求余取整 */
    int addr_1  = IP_Addr % 256;       // 提取第一部分IP地址
    IP_Addr  = IP_Addr / 256;		
    int addr_2 = IP_Addr % 256;        // 提取第一部分IP地址
    IP_Addr  = IP_Addr / 256;		
    int addr_3 = IP_Addr % 256;        // 提取第一部分IP地址
    IP_Addr = IP_Addr / 256;		
    int addr_4  = IP_Addr % 256;       // 提取第一部分IP地址
	
    /* 打印IP地址:结果为"192.168.31.102" */
    printf("IP地址为:%d.%d.%d.%d", addr_4, addr_3, addr_2, addr_1);

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

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

    /* 提取4部分整数:提取方法很多这里省略 */
    int addr_1 = 192;
    int addr_2 = 168;
    int addr_3 = 31;
    int addr_4 = 102;

    /* 根据网络字节倒序计算IP整数 */
    unsigned int IP_Int = addr_1 + (addr_2 * 256) + (addr_3 * 256 * 256) + (addr_4 * 256 * 256 *256);
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值