题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextLine()) { System.out.println(encrypt(in.nextLine())); System.out.println(decode(in.nextLine())); } } private static String encrypt(String str){ String[] strs = str.split("\\."); long result = 0; for(String temp : strs){ Long num = Long.parseLong(temp); result = (result << 8) | num; } return result + ""; } private static String decode(String str){ Long nums = Long.parseLong(str); String val = Long.toBinaryString(nums); while(val.length() % 8 != 0){ val = "0" + val; } String[] ip_s = new String[4]; int index = 3; while(val.length() > 8){ String tmp = val.substring(val.length() - 8); ip_s[index--] = String.valueOf(Integer.parseUnsignedInt(tmp,2)); val = val.substring(0,val.length() - 8); } ip_s[0] = String.valueOf(Integer.parseUnsignedInt(val,2)); return String.join(".",ip_s); } }