华为机试 整数与IP地址间的转换 二进制字符串转数字 区别stoi()

本文主要是介绍华为机试 整数与IP地址间的转换 二进制字符串转数字 区别stoi(),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述

原理: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地址

示例1

输入

10.0.3.193
167969729

输出

167773121
10.3.3.193

 题目链接:https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea?tpId=37&tqId=21256&rp=1&ru=%2Fta%2Fhuawei&qru=%2Fta%2Fhuawei%2Fquestion-ranking&tab=answerKey

其实就是把二进制的“01001001010100101“的和十进制数字的转化,我刚开始混淆了,直接用stoi,显然是错误的。stoi是对十进制的字符串进行转换的。

#include<bits/stdc++.h>
using namespace std;
int main()
{int ip[4],IP;while(scanf("%d.%d.%d.%d\n%d",&ip[0],&ip[1],&ip[2],&ip[3],&IP)!=EOF){string str="";for(int i=0;i<4;i++){int num=ip[i];string tmp="";for(int j=0;j<8;j++){if(num&1){tmp+="1";}else{tmp+="0";}num=num>>1;}reverse(tmp.begin(),tmp.end());str+=tmp;tmp="";}long long sum=0;for(int i=0;i<32;i++){if(str[i]=='1'){sum=sum*2+1;}else{sum*=2;}}cout<<sum<<endl;str="";//复用strfor(int i=0;i<32;i++){if(IP&1){str+='1';}else{str+='0';}IP=IP>>1;//总是忘记这个}reverse(str.begin(),str.end());for(int i=0;i<4;i++){sum=0;//复用sumfor(int j=i*8;j<8*(i+1);j++){if(str[j]=='1'){sum=sum*2+1;}else{sum*=2;}}cout<<sum;if(i!=3){cout<<".";}}cout<<endl;}return 0;
}

我把二进制字符串转十进制数字的包装成一个函数,以后用到可以知道摘过去。

#include<bits/stdc++.h>
using namespace std;
long long toNum(string str)
{long long sum=0;for(int i=0;i<str.size();i++){if(str[i]=='1'){sum=2*sum+1;}else{sum*=2;}}return sum;
}
int main()
{int ip[4],IP;while(scanf("%d.%d.%d.%d\n%d",&ip[0],&ip[1],&ip[2],&ip[3],&IP)!=EOF){string str="";for(int i=0;i<4;i++){int num=ip[i];string tmp="";for(int j=0;j<8;j++){if(num&1){tmp+="1";}else{tmp+="0";}num=num>>1;}reverse(tmp.begin(),tmp.end());str+=tmp;tmp="";}long long sum=0;sum=toNum(str);cout<<sum<<endl;str="";//复用strfor(int i=0;i<32;i++){if(IP&1){str+='1';}else{str+='0';}IP=IP>>1;//总是忘记这个}reverse(str.begin(),str.end());for(int i=0;i<4;i++){sum=0;//复用sumsum=toNum(str.substr(8*i,8));cout<<sum;if(i!=3){cout<<".";}}cout<<endl;}return 0;
}

 

这篇关于华为机试 整数与IP地址间的转换 二进制字符串转数字 区别stoi()的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/288979

相关文章

详解如何通过Python批量转换图片为PDF

《详解如何通过Python批量转换图片为PDF》:本文主要介绍如何基于Python+Tkinter开发的图片批量转PDF工具,可以支持批量添加图片,拖拽等操作,感兴趣的小伙伴可以参考一下... 目录1. 概述2. 功能亮点2.1 主要功能2.2 界面设计3. 使用指南3.1 运行环境3.2 使用步骤4. 核

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java

CSS Padding 和 Margin 区别全解析

《CSSPadding和Margin区别全解析》CSS中的padding和margin是两个非常基础且重要的属性,它们用于控制元素周围的空白区域,本文将详细介绍padding和... 目录css Padding 和 Margin 全解析1. Padding: 内边距2. Margin: 外边距3. Padd

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

分辨率三兄弟LPI、DPI 和 PPI有什么区别? 搞清分辨率的那些事儿

《分辨率三兄弟LPI、DPI和PPI有什么区别?搞清分辨率的那些事儿》分辨率这个东西,真的是让人又爱又恨,为了搞清楚它,我可是翻阅了不少资料,最后发现“小7的背包”的解释最让我茅塞顿开,于是,我... 在谈到分辨率时,我们经常会遇到三个相似的缩写:PPI、DPI 和 LPI。虽然它们看起来差不多,但实际应用

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤