题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = null; str = br.readLine(); ipToNum(str); numToIp(br.readLine()); } public static void numToIp(String str) { String string = Long.toBinaryString(Long.parseLong(str)); if (string.length() < 32) { int len = 32 - string.length(); while (len != 0) { string = "0" + string; len--; } } long[] l = new long[4]; for (int i = 8, j = 0; i<= string.length(); j++) { String temp = string.substring(0, 8); l[j] = Long.parseLong(temp, 2); string = string.substring(8); } for (int i = 0; i < l.length; i++) { System.out.print(l[i]); if (i != l.length - 1) { System.out.print("."); } } } public static void ipToNum(String str) { String[] split = str.split("\\."); String temp = ""; for (int i = 0; i < split.length; i++) { String ip = Integer.toBinaryString(Integer.parseInt(split[i])); if (ip.length() < 8) { int len = 8 - ip.length(); while (len != 0) { ip = "0" + ip; len--; } } temp += ip + ""; } System.out.println(Long.parseLong(temp, 2)); } }