华为OJ——整数与IP地址间的转换
来源:互联网 发布:mysql pdf 微盘 编辑:程序博客网 时间:2024/06/05 08:53
题目描述
- 原理:
ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成一个长整数。
- 举例:
一个ip地址为10.0.3.193
组合起来即为: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位,此时取余为0 s=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+"."); }else sb.append(n); } return sb.toString(); }}
- 注意:
①接收类型的确定,这里用的是long型,避免出现内存泄漏;
②进制之间的转换以及细节
阅读全文
0 0
- 华为OJ 整数与IP地址间的转换
- 华为OJ(整数与IP地址间的转换)
- 【华为OJ】【030-整数与IP地址间的转换】
- 【华为 OJ 】整数与IP地址间的转换
- 华为OJ——整数与IP地址间的转换
- 华为OJ——整数与IP地址间的转换
- 华为OJ——整数与IP地址间的转换
- 华为OJ:ip地址与整数之间的转换
- 华为oj中级 整数与IP地址之间的转换
- [华为OJ--C++]030-整数与IP地址间的转换
- 华为机试——整数与IP地址间的转换
- 华为机试—整数与IP地址间的转换
- 【华为机试】整数与IP地址间的转换
- OJ------整数与IP地址间的转换
- 华为机试-整数与IP地址之间的转换
- 整数与IP地址间的转换
- 整数与IP地址间的转换
- 整数与IP地址间的转换
- export与module.export的区别和用法
- Spring MVC 4.1.0配置Jackson
- HAProxy安装配置详解
- struts2学习之---配置处理结果
- PCB中过孔和通孔焊盘的区别
- 华为OJ——整数与IP地址间的转换
- Eclipse报错Java compiler level does not match the version of the installed Java project facet.解决办法
- Android Studio 快捷键
- asyncio文档学习——消息循环EventLoop例子2
- 进程和线层之间的关系
- Angular的过滤器和自定义过滤器
- Git版本恢复命令reset(转载)
- 日记
- 【长沙·签约】中企动力与湖南湘中制药同在 开启云平台服务之旅