华为机试 整数与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

相关文章

Java实现按字节长度截取字符串

《Java实现按字节长度截取字符串》在Java中,由于字符串可能包含多字节字符,直接按字节长度截取可能会导致乱码或截取不准确的问题,下面我们就来看看几种按字节长度截取字符串的方法吧... 目录方法一:使用String的getBytes方法方法二:指定字符编码处理方法三:更精确的字符编码处理使用示例注意事项方

使用Python开发Markdown兼容公式格式转换工具

《使用Python开发Markdown兼容公式格式转换工具》在技术写作中我们经常遇到公式格式问题,例如MathML无法显示,LaTeX格式错乱等,所以本文我们将使用Python开发Markdown兼容... 目录一、工具背景二、环境配置(Windows 10/11)1. 创建conda环境2. 获取XSLT

Java根据IP地址实现归属地获取

《Java根据IP地址实现归属地获取》Ip2region是一个离线IP地址定位库和IP定位数据管理框架,这篇文章主要为大家详细介绍了Java如何使用Ip2region实现根据IP地址获取归属地,感兴趣... 目录一、使用Ip2region离线获取1、Ip2region简介2、导包3、下编程载xdb文件4、J

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

Java中的StringBuilder之如何高效构建字符串

《Java中的StringBuilder之如何高效构建字符串》本文将深入浅出地介绍StringBuilder的使用方法、性能优势以及相关字符串处理技术,结合代码示例帮助读者更好地理解和应用,希望对大家... 目录关键点什么是 StringBuilder?为什么需要 StringBuilder?如何使用 St

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

Java中字符串转时间与时间转字符串的操作详解

《Java中字符串转时间与时间转字符串的操作详解》Java的java.time包提供了强大的日期和时间处理功能,通过DateTimeFormatter可以轻松地在日期时间对象和字符串之间进行转换,下面... 目录一、字符串转时间(一)使用预定义格式(二)自定义格式二、时间转字符串(一)使用预定义格式(二)自

python实现svg图片转换为png和gif

《python实现svg图片转换为png和gif》这篇文章主要为大家详细介绍了python如何实现将svg图片格式转换为png和gif,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录python实现svg图片转换为png和gifpython实现图片格式之间的相互转换延展:基于Py