题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextLine()) { // 注意 while 处理多个 case String str = in.nextLine(); if (str.contains(".")) { pointToTen(str); } else { tenToPoint(str); } } } public static void pointToTen(String str) { String[] strArr = str.split("\\."); StringBuffer sb = new StringBuffer(); for (int i = 0; i < strArr.length; i++) { String curStr = "00000000"; String tempStr = Long.toString(Long.valueOf(strArr[i]), 2); curStr = (curStr + tempStr).substring(tempStr.length(), tempStr.length() + 8); sb.append(curStr); } System.out.println(Long.valueOf(sb.toString(), 2)); return; } public static void tenToPoint(String str) { String[] strArr = new String[4]; String bin = Long.toString(Long.valueOf(str), 2); int j = bin.length(); for(int i=3;i>=0;i--) { strArr[i] = Long.valueOf(bin.substring(Math.max(0, j-8),j), 2).toString() ; j-=8; }; System.out.println(String.join(".", strArr)); } }