【华为OJ】【030-整数与IP地址间的转换】
2016-05-08 07:54
731 查看
【华为OJ】【算法总篇章】
【华为OJ】【030-整数与IP地址间的转换】
【工程下载】
题目描述
原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成一个长整数。 举例:一个ip地址为10.0.3.193 每段数字 相对应的二进制数 10 00001010 0 00000000 3 00000011 193 11000001 组合起来即为:00001010 00000000 00000011 11000001,转换为10进制数就是:167773121,即该IP地址转换后的数字就是它了。 每段可以看成是一个0-255的整数,需要对IP地址进行校验
输入描述
输入 1 输入IP地址 2 输入10进制型的IP地址
输出描述
输出 1 输出转换成10进制的IP地址 2 输出转换后的IP地址
输入例子
10.0.3.193 167969729
输出例子
167773121 10.3.3.193
算法实现
import java.util.Scanner; /** * Author: 王俊超 * Date: 2015-12-24 13:55 * All Rights Reserved !!! */ public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = ""; while (scanner.hasNext()) { str = scanner.next(); if (str.contains(".")) { System.out.println(ipToInt(str)); } else { System.out.println(intToIp(str)); } } scanner.close(); } private static String intToIp(String str) { String result = ""; Long input = Long.parseLong(str); for (int i = 3; i >= 0; i--) { result = (input & 0x000000FF) + "." + result; input >>>= 8; } return result.substring(0, result.length() - 1); } private static long ipToInt(String str) { String[] array; long result = 0; array = str.split("[.]"); for (String s : array) { result = (result << 8) + Integer.parseInt(s); } return result; } }
相关文章推荐
- 【BZOJ-3275&3158】Number&千钧一发 最小割
- vim的终极配置spf13-vim
- 【华为OJ】【029-统计每个月兔子的总数】
- vim插件管理器Vundle
- Android studio中找不到so文件的问题:java.lang.UnsatisfiedLinkError
- Mac 启动 sshd 服务
- vim的插件配置文件夹的组织形式(传统方式)
- Android Studio2.1 Run APP:Error: Execution failed for task
- hadoop集群环境搭建之zookeeper集群的安装部署
- hadoop集群环境搭建之安装配置hadoop集群
- 迭代器 Iterator
- VIMSCRIPT学习
- 【华为OJ】【028-图片整理】
- 注解校验说明及注解使用场景
- 【华为OJ】【027-字符串运用-密码截取】
- 【华为OJ】【026-字符串加密】
- bzoj 2241: [SDOI2011]打地鼠(暴搜+减枝)
- 游子吟
- 母亲
- centos7 apache 虚拟目录 You don't have permission to access / on this server 解决方法