题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
import java.util.Scanner;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String ip = in.readLine();
String ten = in.readLine();
System.out.println(ip2ten(ip));
System.out.println(ten2ip(ten));
}
private static String ip2ten(String ip) {
String[] parts = ip.split("\\.");
for (int i = 0; i < parts.length; i++) {
parts[i] = Integer.toString(Integer.parseInt(parts[i]), 2);
parts[i] = addZero(parts[i], 8);
}
String res = String.join("", parts);
return Long.toString(Long.parseLong(res, 2), 10);
}
private static String ten2ip(String ten) {
String str = Long.toString(Long.parseLong(ten), 2);
str = addZero(str, 32);
String[] parts = new String[4];
for (int i = 0; i < 4; i++) {
parts[i] = Integer.valueOf(str.substring(i * 8, (i + 1) * 8), 2).toString();
}
return String.join(".", parts);
}
private static String addZero(String str, int num) {
if (str.length() >= num) {
return str;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < num - str.length(); i++) {
sb.append("0");
}
sb.append(str);
return sb.toString();
}
}

查看5道真题和解析
海康威视公司福利 1139人发布