题解 | #整数与IP地址间的转换#

整数与IP地址间的转换

http://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Scanner sc = new Scanner(System.in);
	while (sc.hasNextLine()) {
		String inputStr = sc.nextLine();
		String inputNum = sc.nextLine();
		String[] ipArr = inputStr.split("[.]");
		int ip0 = Integer.parseInt(ipArr[0]);
		int ip1 = Integer.parseInt(ipArr[1]);
		int ip2 = Integer.parseInt(ipArr[2]);
		int ip3 = Integer.parseInt(ipArr[3]);
		String binaryIp0 = Integer.toBinaryString(ip0);
		String binaryIp1 = Integer.toBinaryString(ip1);
		String binaryIp2 = Integer.toBinaryString(ip2);
		String binaryIp3 = Integer.toBinaryString(ip3);

		String resultIp0 = addZero(binaryIp0, 8);
		String resultIp1 = addZero(binaryIp1, 8);
		String resultIp2 = addZero(binaryIp2, 8);
		String resultIp3 = addZero(binaryIp3, 8);

		String result = resultIp0 + resultIp1 + resultIp2 + resultIp3;

		Long resultNum = Long.parseLong(result, 2);
		

		Long number = Long.parseLong(inputNum);
		String binaryNum = Long.toBinaryString(number);
		String resultStr = addZero(binaryNum, 32);

		String result1 = resultStr.substring(0, 8);
		String result2 = resultStr.substring(8, 16);
		String result3 = resultStr.substring(16, 24);
		String result4 = resultStr.substring(24, 32);

		int calIp0 = Integer.parseInt(result1, 2);
		int calIp1 = Integer.parseInt(result2, 2);
		int calIp2 = Integer.parseInt(result3, 2);
		int calIp3 = Integer.parseInt(result4, 2);

		String ipAddress = calIp0 + "." + calIp1 + "." + calIp2 + "." + calIp3;
		System.out.println(resultNum);
		System.out.println(ipAddress);
	}
}

public static String addZero(String str, int number) {
	int buZero = 0;
	if (str.length() < number) {
		buZero = number - str.length();
	} else {
		return str;
	}
	String zero = "";
	for (int i = 0; i < buZero; i++) {
		zero += "0";
	}
	return zero + str;

}

}

全部评论

相关推荐

不愿透露姓名的神秘牛友
02-14 11:10
点赞 评论 收藏
分享
2024-12-29 19:48
河北科技大学 Java
没事就爱看简历:问题不在于简历:1、大学主修课程学那么多应用语言,作为计算机专业是很难理解的。 2、技能部分,每一个技能点的后半句话,说明对熟练,熟悉的标准有明显误会。 3、项目应该是校企合作的练习吧,这个项目你负责什么,取得了哪些成果都没有提及,只是列举了你认为有技术含量的点,而这些都有成熟的实现。
点赞 评论 收藏
分享
浪子陪都:简历最优秀的地方放到了后面,国奖,校级奖学金这些是最亮眼的。说明你跟同级别的学生不一样。 建议台灯这个,PCB布局布线这个词汇不专业,业内是PCB Layout,第二,单片机的板子一般不用考虑SI,PI 都是低速信号,只要遵循3W原则就好了。 单片机的项目太low了,技能这块,你要看一下BOSS直聘的招聘要求,按照别人的要求写,一些关键词可以增加你简历被检索到的概率。 主修课程不用写,这个没有人去关注的。
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务