题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
import java.util.Scanner; import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String IP = in.nextLine(); long num = in.nextLong(); // 注意 hasNext 和 hasNextLine 的区别 System.out.println(IPToNum(IP)); System.out.println(NumToIP(num)); } private static long IPToNum(String IP){ String[] list = IP.split("\\."); String binary = ""; for(int i = 0; i < 4; i++){ String real = Integer.toBinaryString(Integer.parseInt(list[i])); for(int j = 0; j < 8 - real.length(); j++){ binary += "0"; } binary += real; } return toNum(binary); } private static String NumToIP(long num){ String binary = Long.toBinaryString(num); List<String> list = new ArrayList<>(); int length = binary.length(); for(int i = 0; i < 32 - length; i++){ binary = "0" + binary; } for(int count = 0; count < 4; count++){ String part = ""; for(int i =0; i < 8; i++){ part += binary.charAt(i + count * 8); } list.add(part); } String result = ""; result += toNum(list.get(0)); result += "."; result += toNum(list.get(1)); result += "."; result += toNum(list.get(2)); result += "."; result += toNum(list.get(3)); return result; } private static long toNum(String binary){ long num = 0; for(int i = 0; i < binary.length(); i++){ num += (long) ((binary.charAt(i)-48) * Math.pow(2, binary.length()-i-1)); } return num; } }