华为机试HJ33:整数与IP地址间的转换
作者:翟天保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地址间的转换相关推荐
- 华为机考攻略(python)--字符串操作【9题】(第四题*HJ33整数与IP地址间的转换)
系列文章目录 文章目录 系列文章目录 前言 一.*HJ33整数与IP地址间的转换 二.sound code 总结 前言 一.*HJ33整数与IP地址间的转换 描述: 原理:ip地址的每段可以看成是一个 ...
- 华为OJ——整数与IP地址间的转换
题目描述 原理: ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成一个长整数. 举例: 一个ip地址为10.0.3.193 每段数字 相对应的 ...
- 牛客网--整数与IP地址间的转换
题目描述 原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成 一个长整数. 举例:一个ip地址为10.0.3.193 每段数字 ...
- C练题笔记之:牛客-HJ033.整数与IP地址间的转换
题目: 描述 原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成 一个长整数. 举例:一个ip地址为10.0.3.193 每段数字 ...
- 整数与IP地址间的转换Python
data = input().split(".") #IP地址转整数 a = [] b = '' caozuo = [a.append(bin(int(i))[2:].rjust( ...
- 【华为机试真题 Python实现】字串转换 a->b,b->c
文章目录 前言 题目描述 示例 1 示例 2 参考代码 前言 <华为机试真题>专栏含牛客网华为专栏.华为面经试题.华为OD机试真题. 如果您在准备华为的面试,期间有想了解的可以私信我,我会 ...
- 华为机试HJ90:合法IP
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4 ...
- 华为机试--高精度整数加法
描述: 输入两个用字符串 str 表示的整数,求它们所表示的数之和. 数据范围: 1≤len(str)≤10000 输入描述: 输入两个字符串.保证字符串只含有'0'~'9'字符 输出描述: 输出求和 ...
- 华为机试:整数最小和
[编程题目 | 100分]整数最小和 [ 100 / 中等 ] 整数最小和 题目描述: 输入字符串s,输出s中包含所有整数的最小和 说明: 字符串s,只包含 a-z A-Z ± : 合法的整数包括 1 ...
最新文章
- .axf文件_干货!STM32晶振的更改,BIN文件的生成
- 【邮箱使用】Yahoo邮箱POP3、SMTP开通以及设置方法
- CodeForces - 556A Case of the Zeros and Ones
- 奥比中光大白(3D结构光)摄像头测试发现对着灯光过曝问题
- 独立成分分析ICA系列5:信息极大化的 ICA 算法
- Ubuntu12下安装redis(多图版)+ Jedis连接Redis
- 思科光传输功率查询_常见的6款40G QSFP+光模块型号介绍及应用
- Lua 中写 C 扩展库时用到的一些技巧
- 同步、异步的使用场景及好处
- java 反射父类私有属性值_如何在Java中通过反射访问父类的父类的私有字段? - java...
- 【每日AI】什么是维数?
- 安装Adobe全家桶时出现The installation cannot continue as the installer file may be damaged.解决方法。
- 中国广电剑未出鞘,但中国联通和中国电信已吓得瑟瑟发抖
- ios苹果机系统 的1px边框不显示
- win10内置linux读取u盘raw,U盘或磁盘分区RAW格式恢复方案
- 历代iOS设备屏幕分辨率
- 2022好看的校园表白墙程序源码Ver2.0
- 各种二维码介绍(锐浪报表)
- SLF4J使用slf4j-nop禁止日志打印
- mybatisPlus中 批量删除