题解 | #整数与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;

}

}

全部评论

相关推荐

评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务