题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()){ String s = scanner.nextLine(); String s1 = scanner.nextLine(); System.out.println(Main.toten(s)); System.out.println(Main.toip(s1)); } } public static long toten(String s){ String[] split = s.split("\\."); String longs=""; for (int i = 0; i < split.length; i++) { if (Integer.parseInt(split[i])<0||Integer.parseInt(split[i])>255){ break; }else { String s1 = Integer.toString(Integer.valueOf(split[i]), 2); HashMap<Integer, Integer> hm = new HashMap<>(); hm.put(0,s1.length()); if (s1.length()<8){ for (int j = 0; j <8-hm.get(0); j++) { s1="0"+s1; } } longs=longs+s1; } } Long i1 = Long.parseLong(longs, 2); return i1; } public static String toip(String s){ Long it = Long.valueOf(s); String string = Long.toString(it, 2); HashMap<Integer, Integer> hs = new HashMap<>(); hs.put(0,string.length()); if (string.length()<32){ for (int i = 0; i <32-hs.get(0); i++) { string="0"+string; } } // System.out.println(string); ArrayList<String> st = new ArrayList<>(); for (int i = 0; i <string.length(); i=i+8) { String substring = string.substring(i, i+8); st.add(substring); } // System.out.println(st); String su=""; for (int i = 0; i <4; i++) { int i1 = Integer.parseInt(st.get(i), 2); String s1 = String.valueOf(i1); if (i<3) { su = su + s1 + "."; }else { su = su + s1; } } return su; } }