华为OJ——整数与IP地址间的转换
题目描述
- 原理:
ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成一个长整数。
- 举例:
一个ip地址为10.0.3.193
每段数字 | 相对应的二进制数 |
---|---|
10 | 00001010 |
0 | 00000000 |
3 | 00000011 |
193 | 11000001 |
组合起来即为:00001010 00000000 00000011 11000001,转换为10进制数就是:167773121,即该IP地址转换后的数字就是它了。
ip的每段可以看成是一个0-255的整数,需要对IP地址进行校验
输入描述:
输入
1 输入IP地址
2 输入10进制型的IP地址输出描述:
输出
1 输出转换成10进制的IP地址
2 输出转换后的IP地址示例1
输入
10.0.3.193
167969729
输出
167773121
10.3.3.193
实现代码:
package cn.c_shuang.demo33;import java.util.Scanner;
/*** 整数与IP地址间的转换* @author Cshuang**/
public class Main {public static void main(String[] args) {Scanner in =new Scanner(System.in);while(in.hasNext()){String ipStr=in.nextLine();String longStr=in.nextLine();System.out.println(ipToLong(ipStr));System.out.println(longToIP(longStr));}in.close();}private static long ipToLong(String ipStr) {String[] ips=ipStr.split("\\.");StringBuilder sb=new StringBuilder();for (int i = 0; i < ips.length; i++) {String ipIntStr=Integer.toBinaryString(Integer.parseInt(ips[i]));if(ipIntStr.length()<8){while(ipIntStr.length()!=8)ipIntStr="0"+ipIntStr;}sb.append(ipIntStr);}return Long.valueOf(sb.toString(),2);}private static String longToIP(String longStr) {String bins=Long.toBinaryString(Long.parseLong(longStr));//注意这里必须用Long.parseLong()进行接收转换,否则会超出范围StringBuilder sb=new StringBuilder();String s;int n;while(bins.length()>0) {if(bins.length()%8!=0){//有可能恰好是32位,此时取余为0s=bins.substring(0,bins.length()%8);bins=bins.substring(bins.length()%8);}else{s=bins.substring(0,8);bins=bins.substring(8);}n=Integer.parseInt(s, 2);if(bins.length()!=0){sb.append(n+".");}elsesb.append(n);}return sb.toString();}
}
- 注意:
①接收类型的确定,这里用的是long型,避免出现内存泄漏;
②进制之间的转换以及细节
华为OJ——整数与IP地址间的转换相关推荐
- 华为机考攻略(python)--字符串操作【9题】(第四题*HJ33整数与IP地址间的转换)
系列文章目录 文章目录 系列文章目录 前言 一.*HJ33整数与IP地址间的转换 二.sound code 总结 前言 一.*HJ33整数与IP地址间的转换 描述: 原理:ip地址的每段可以看成是一个 ...
- 华为机试HJ33:整数与IP地址间的转换
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起 ...
- 牛客网--整数与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整数与IP地址转换
我们有时会将一个整数与IP地址进行互换,用python代码实现很简单 将一个整数如2000000,变为一个IP地址的方式 >>> import socket >>> ...
- android 整数与ip地址的转换
今天,简单讲讲android里如何把整数与ip地址进行转换. 这个很简单,在网上查找资料就找到了.这里记录一下. 1.IP地址转换为整数 将IP地址转化成整数的方法如下: 1.通过Strin ...
- python整数与IP地址转换 [转]
原文地址为: python整数与IP地址转换 [转] 我们有时会将一个整数与IP地址进行互换,用python代码实现很简单 将一个整数如2000000,变为一个IP地址的方式 >>> ...
- 华为手机linux连接网络设置ip地址,华为手机怎么看网络IP地址?华为手机查看网络IP地址两种方法...
我们在使用华为手机连接网络后,如果想要查看一下当前网络的IP地址,这时该怎么来操作呢?下面就来看看华为手机如何查看IP地址的两个方法吧. 华为手机查看当前连接网络IP地址教程 方法一:我们在打开的华为 ...
最新文章
- python3连接mysql_第七篇:Python3连接MySQL
- 【转】JavaScript事件顺序
- 信号回勾产生的原因_电力电缆故障原因及常用检测方法
- 为什么S/4HANA的销售订单创建会触发生产订单的创建 1
- Codeforces Round #413 C-Fountains 树状数组
- 记录一次安恒信息面试过程
- FDA批准首个无需人类医生指导的AI,可独立诊断眼科疾病
- 海美迪盒子android升级包,海美迪H5固件升级ROM系统刷机包下载_刷机教程
- ORACLE VARCHAR2和NVARCHAR2的区别
- 【STM32】简介及f4 GPIO八种模式及工作原理详解(含电路原理三极管等一步到位了解GPIO)
- 静态分析Android程序
- Android键盘输入法(一)——键盘类型
- (原創) 如何一個字元一個字元的印出字串? (C/C++) (C)
- win7怎么修改系统语言
- java锟斤拷锟斤拷锟_锟斤拷?UTF-8与GBK互转乱码问题
- 概念澄清:如何直接拿到promise的返回值
- 智慧停车诱导技术方案
- lucene查询解析器语法
- 程序员最怕的四个字:通宵发布!
- 小马哥---高仿苹果6p 主板型号Q33-qhd 刷机拆机主板图与开机界面图 与Q33-hd主板对比差别图