题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
http://www.nowcoder.com/questionTerminal/66ca0e28f90c42a196afd78cc9c496ea
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s1 = scanner.next();
String s2 = scanner.next();
System.out.println(ipv4ToInt(s1));
System.out.println(intToIpv4(s2));
}
public static long ipv4ToInt(String ipv4) {
String[] sArray = ipv4.split("\\.");
String result = "";
for (int i = 0; i < 4; i++) {
result = result + String.format("%08d",
Integer.parseInt(Integer.toBinaryString(Integer.parseInt(sArray[i]))));
}
return Long.parseLong(result, 2);
}
public static String intToIpv4(String ipv4Int) {
String s = Long.toBinaryString(Long.parseLong(ipv4Int));
int len = s.length();
String result = "." + Integer.parseInt(s.substring(len - 8, len), 2);
result = "." + Integer.parseInt(s.substring(len - 16, len - 8), 2) + result;
result = "." + Integer.parseInt(s.substring(len - 24, len - 16), 2) + result;
result = Integer.parseInt(s.substring(0, len - 24), 2) + result;
return result;
}
}