IP地址转换:点分十进制数与十进制数

引言

这个ip地址互换考的还是比较多的,尤其是你做网络方面的工作的话,这肯定是会问你的。本文主要介绍了一个十进制数与点分十进制的ip地址互换的过程。话不多说,那就开始吧。

一、十进制转换为IP地址

1.思路

思路:将32位中的每8位提取出来变为10进制数,然后通过sprintf到一个字符数组里就可以了

示例一:将前8位提取出来变成10进制数,通过位移运算符,将这32位右移24位,因为源码右移左补零,刚好就成十进制数了
在这里插入图片描述

示例二:前9 - 16 位:先左移8位将前8位消掉,再右移24位,如下图所示
在这里插入图片描述

2.示例代码

#include <iostream>

using namespace std;

int main()
{
    unsigned int ip = 3487979799;
    unsigned int n1 = ip >> 24;
    unsigned int n2 = ip << 8 >> 24;
    unsigned int n3 = ip << 16 >> 24;
    unsigned int n4 = ip << 24 >> 24;

    char ip_str[17] = {0};
    sprintf(ip_str, "%d.%d.%d.%d", n1, n2, n3, n4);
    printf("%s\n", ip_str);
    
    return 0;
}

这个我通过计算机计算是正确的
在这里插入图片描述

二、IP地址转换为十进制数

1.思路

通过sscanf把每位的字符串数字提取出来,然后将每一位的数左移到相应的位置,再或起来就可以了
在这里插入图片描述

2.示例代码

#include <iostream>

using namespace std;

int main()
{
    unsigned int n1, n2, n3, n4;
    
    char ip_str[17] = {"207.230.89.23"};
    
    sscanf(ip_str, "%d.%d.%d.%d", &n1, &n2, &n3, &n4);
    
    unsigned int ip = (n1 << 24) | (n2 << 16) | (n3 << 8) | n4;
    
    printf("%u\n", ip);
    
    return 0;
}

结果也是正确的!
在这里插入图片描述

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lijiachang030718

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值