整数与IP地址间的转换【牛客网】

本文介绍了如何在C++中将IP地址与整数相互转换。转换规则是将IP的每个字段转换为8位二进制,再组合成32位二进制数。对于IP转整数,通过将IP字段转换为整数并应用特定公式。反之,通过整数对2的幂次方进行除法获取IP字段。文中还提及了一种更巧妙的方法,利用位移和与操作实现转换。
摘要由CSDN通过智能技术生成

题意理解

给出一个ip和整数,分别转换成整数和ip,转换规则是ip每个字段转换成8为二进制数,再拼成32位的二进制数。

问题分析

ip转整数,按.取各字段字符串,转化为整数,再按照a*2^24+b*2^16+c*2^8+d公式计算整数。

整数转ip,分别整除2^24,2^16,2^8得到四个字段的整数,再拼在一起。

 

其他

这个问题很经典。我的方法有点笨。另外一个思路不错,如下:

1 int>char>int>char方法读入ip字段,再用左移计算整数

2 整数用&与操作分别取最高8位,中间两个8位,最后8位,再移位24,16,8,得到各字段值。

链接

https://github.com/xierensong/learngit/blob/master/ncode/7/7.cpp

int main() 
{
    unsigned int n, a, b, c, d;
    char ch;
    
    while (cin >> a >> ch >> b >> ch >> c >> ch >> d) {  //cin按照格式取出需要的整数
        cout << (a << 24 | b << 16 | c << 8 | d) << endl;    //以第一个数a为例,左偏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值