题解 | #HJ33 整数与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()) { String s = in.nextLine(); if (s.contains(".")) { System.out.println(ipToNum(s)); } else { System.out.println(NumToIp(s)); } } } //ip -> num public static long ipToNum(String ip) { String[] split = ip.split("\\."); long result = 0; //将数字做位运算再累加起来,注意使用long for (int i = 0; i < split.length; i++) { long num = Long.parseLong(split[i]); result += num << (split.length - 1 - i) * 8; } return result; } //num -> ip public static String NumToIp(String s) { long num = Long.parseLong(s); StringBuffer sb = new StringBuffer(); for (int i = 3; i >= 0; i--) { sb.append(num / (1 << 8 * i) % 256); sb.append("."); } String result = sb.toString(); return result.substring(0, result.length() - 1); } }