题目描述

  • 原理:

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地址间的转换相关推荐

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

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

  2. 华为机试HJ33:整数与IP地址间的转换

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起 ...

  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整数与IP地址转换

    我们有时会将一个整数与IP地址进行互换,用python代码实现很简单 将一个整数如2000000,变为一个IP地址的方式 >>> import socket >>> ...

  7. android 整数与ip地址的转换

    今天,简单讲讲android里如何把整数与ip地址进行转换. 这个很简单,在网上查找资料就找到了.这里记录一下. 1.IP地址转换为整数 将IP地址转化成整数的方法如下:      1.通过Strin ...

  8. python整数与IP地址转换 [转]

    原文地址为: python整数与IP地址转换 [转] 我们有时会将一个整数与IP地址进行互换,用python代码实现很简单 将一个整数如2000000,变为一个IP地址的方式 >>> ...

  9. 华为手机linux连接网络设置ip地址,华为手机怎么看网络IP地址?华为手机查看网络IP地址两种方法...

    我们在使用华为手机连接网络后,如果想要查看一下当前网络的IP地址,这时该怎么来操作呢?下面就来看看华为手机如何查看IP地址的两个方法吧. 华为手机查看当前连接网络IP地址教程 方法一:我们在打开的华为 ...

最新文章

  1. python3连接mysql_第七篇:Python3连接MySQL
  2. 【转】JavaScript事件顺序
  3. 信号回勾产生的原因_电力电缆故障原因及常用检测方法
  4. 为什么S/4HANA的销售订单创建会触发生产订单的创建 1
  5. Codeforces Round #413 C-Fountains 树状数组
  6. 记录一次安恒信息面试过程
  7. FDA批准首个无需人类医生指导的AI,可独立诊断眼科疾病
  8. 海美迪盒子android升级包,海美迪H5固件升级ROM系统刷机包下载_刷机教程
  9. ORACLE VARCHAR2和NVARCHAR2的区别
  10. 【STM32】简介及f4 GPIO八种模式及工作原理详解(含电路原理三极管等一步到位了解GPIO)
  11. 静态分析Android程序
  12. Android键盘输入法(一)——键盘类型
  13. (原創) 如何一個字元一個字元的印出字串? (C/C++) (C)
  14. win7怎么修改系统语言
  15. java锟斤拷锟斤拷锟_锟斤拷?UTF-8与GBK互转乱码问题
  16. 概念澄清:如何直接拿到promise的返回值
  17. 智慧停车诱导技术方案
  18. lucene查询解析器语法
  19. 程序员最怕的四个字:通宵发布!
  20. 小马哥---高仿苹果6p 主板型号Q33-qhd 刷机拆机主板图与开机界面图 与Q33-hd主板对比差别图

热门文章

  1. C#使用aforge框架打开摄像头(续)
  2. 阴阳师ssr模型文件——茨木童子模型展示
  3. 微信小程序学习(1)——小程序项目文件及文件夹的功能介绍
  4. 职称计算机对评副高,软著对评副高级职称的作用
  5. 炸弹人 html5,HTML5再显威力 与全世界一起玩炸弹人
  6. eclipse rcp_品牌化您的Eclipse RCP应用程序
  7. 安装Ubuntu20.04双系统
  8. Mac系统 pycocotools安装
  9. 几个大小端的判断的程序
  10. 图片在盒子里面垂直居中的案例