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