作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

题目描述:

原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成
一个长整数。
举例:一个ip地址为10.0.3.193
每段数字             相对应的二进制数
10                   00001010
0                    00000000
3                    00000011
193                  11000001

组合起来即为:00001010 00000000 00000011 11000001,转换为10进制数就是:167773121,即该IP地址转换后的数字就是它了。

本题含有多组输入用例,每组用例需要你将一个ip地址转换为整数、将一个整数转换为ip地址。

输入描述:

输入 
1 输入IP地址
2 输入10进制型的IP地址

输出描述:

输出
1 输出转换成10进制的IP地址
2 输出转换后的IP地址

示例:

输入:

10.0.3.193

167969729

输出:

167773121

10.3.3.193

解题思路:

字符串转换题。用两个函数分别使ip转为数字和使数字转为ip。

iptonum函数,输入的ip已经经过了去点操作,用istringstream依次读取整型数据存放在容器中,结合bitset使整数变为8位二进制数据类型,并串成长字符串形式,同样用bitset<32>直接转为数字,得到结果。

numtoip函数,输入数字,用bitset<32>直接转为32位二进制形式,每8位进行一次转化,转为10进制数字,共4个数字,组合成ip地址的形式,每个数字前加个".",构成snum,去除第一个字符就是ip地址了。

测试代码:

#include <iostream>
#include <vector>
#include <sstream>
#include <bitset>
using namespace std;
long iptonum(string s)
{vector<int> nums;istringstream in(s);int number;while(in>>number){nums.push_back(number);}string str;for(auto i:nums){bitset<8> temp(i);str+=temp.to_string();}bitset<32> result(str);long ip=result.to_ulong();return ip;
}
string numtoip(long num)
{bitset<32> in(num);string str=in.to_string();vector<int> nums;for(int i=0;i<4;++i){bitset<8> temp(str.substr(i*8,8));nums.push_back(temp.to_ulong());}string snum;for(auto i:nums){snum=snum+'.'+to_string(i);}return snum.substr(1);
}
int main()
{string s;long number;while(cin>>s>>number){for(auto &i:s){if(i=='.')i=' ';}long r1=iptonum(s);string r2=numtoip(number);cout<<r1<<endl;cout<<r2<<endl;}return 0;
}

华为机试HJ33:整数与IP地址间的转换相关推荐

  1. 华为机考攻略(python)--字符串操作【9题】(第四题*HJ33整数与IP地址间的转换)

    系列文章目录 文章目录 系列文章目录 前言 一.*HJ33整数与IP地址间的转换 二.sound code 总结 前言 一.*HJ33整数与IP地址间的转换 描述: 原理:ip地址的每段可以看成是一个 ...

  2. 华为OJ——整数与IP地址间的转换

    题目描述 原理: ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成一个长整数. 举例: 一个ip地址为10.0.3.193 每段数字 相对应的 ...

  3. 牛客网--整数与IP地址间的转换

    题目描述 原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成 一个长整数. 举例:一个ip地址为10.0.3.193 每段数字       ...

  4. C练题笔记之:牛客-HJ033.整数与IP地址间的转换

    题目: 描述 原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成 一个长整数. 举例:一个ip地址为10.0.3.193 每段数字     ...

  5. 整数与IP地址间的转换Python

    data = input().split(".") #IP地址转整数 a = [] b = '' caozuo = [a.append(bin(int(i))[2:].rjust( ...

  6. 【华为机试真题 Python实现】字串转换 a->b,b->c

    文章目录 前言 题目描述 示例 1 示例 2 参考代码 前言 <华为机试真题>专栏含牛客网华为专栏.华为面经试题.华为OD机试真题. 如果您在准备华为的面试,期间有想了解的可以私信我,我会 ...

  7. 华为机试HJ90:合法IP

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4 ...

  8. 华为机试--高精度整数加法

    描述: 输入两个用字符串 str 表示的整数,求它们所表示的数之和. 数据范围: 1≤len(str)≤10000 输入描述: 输入两个字符串.保证字符串只含有'0'~'9'字符 输出描述: 输出求和 ...

  9. 华为机试:整数最小和

    [编程题目 | 100分]整数最小和 [ 100 / 中等 ] 整数最小和 题目描述: 输入字符串s,输出s中包含所有整数的最小和 说明: 字符串s,只包含 a-z A-Z ± : 合法的整数包括 1 ...

最新文章

  1. .axf文件_干货!STM32晶振的更改,BIN文件的生成
  2. 【邮箱使用】Yahoo邮箱POP3、SMTP开通以及设置方法
  3. CodeForces - 556A Case of the Zeros and Ones
  4. 奥比中光大白(3D结构光)摄像头测试发现对着灯光过曝问题
  5. 独立成分分析ICA系列5:信息极大化的 ICA 算法
  6. Ubuntu12下安装redis(多图版)+ Jedis连接Redis
  7. 思科光传输功率查询_常见的6款40G QSFP+光模块型号介绍及应用
  8. Lua 中写 C 扩展库时用到的一些技巧
  9. 同步、异步的使用场景及好处
  10. java 反射父类私有属性值_如何在Java中通过反射访问父类的父类的私有字段? - java...
  11. 【每日AI】什么是维数?
  12. 安装Adobe全家桶时出现The installation cannot continue as the installer file may be damaged.解决方法。
  13. 中国广电剑未出鞘,但中国联通和中国电信已吓得瑟瑟发抖
  14. ios苹果机系统 的1px边框不显示
  15. win10内置linux读取u盘raw,U盘或磁盘分区RAW格式恢复方案
  16. 历代iOS设备屏幕分辨率
  17. 2022好看的校园表白墙程序源码Ver2.0
  18. 各种二维码介绍(锐浪报表)
  19. SLF4J使用slf4j-nop禁止日志打印
  20. mybatisPlus中 批量删除

热门文章

  1. 获取POM.XML依赖的JAR包
  2. PHP Excel导入数据到MySQL数据库
  3. PowerShell远程连接到Windows
  4. 爬取 wallhaven图片到本地壁纸库
  5. C语言实现井子格游戏
  6. rpm apache2 啟動vhost .htaccess讀取問題
  7. FreeNAS存储+iscsi
  8. 联通引入乐phone:联想欲克隆PC成功模式
  9. 1026. 节点与其祖先之间的最大差值
  10. python ftp 文件修改时间 乐贴_如何使用Python ftplib获取FTP文件的修改时间