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