题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
String input = scanner.nextLine();
Object res ;
if (input.contains(".")) {
res = getIpLong(input);
} else {
res = getIpStr(input);
}
System.out.println(res);
}
}
private static String getIpStr(String input) {
Long ipNum = Long.parseLong(input);
String binaryString = Long.toBinaryString(ipNum);
binaryString = String.format("%32s", binaryString).replace(" ", "0");
StringBuilder result = new StringBuilder();
for (int i = 0; i < binaryString.length(); i = i + 8) {
String str = binaryString.substring(i, i + 8);
int num = Integer.parseInt(str, 2);
result.append(num).append(".");
}
result.deleteCharAt(result.length() - 1);
return result.toString();
}
private static long getIpLong(String input) {
String[] ip = input.split("\\.");
StringBuilder builder = new StringBuilder();
for (int i = 0; i < ip.length; i++) {
String ipNum = ip[i];
String str = Integer.toBinaryString(Integer.parseInt(ipNum));
str = String.format("%8s", str).replace(" ", "0");
builder.append(str);
}
return Long.parseLong(builder.toString(), 2);
}
}



