题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
http://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); while(in.hasNextLine()){ String strIp = in.nextLine(); String longIp = in.nextLine(); System.out.println(ipToLong(strIp)); System.out.println(ipToStr(longIp)); } } private static long ipToLong(String str){ String[] strArr = str.split("\\."); StringBuilder sb = new StringBuilder(32); for(int i=0; i < strArr.length; i++){ String binary = Integer.toString(Integer.parseInt(strArr[i]), 2); binary = String.format("%08d", Integer.valueOf(binary)); sb.append(binary); } return Long.parseLong(sb.toString(), 2); } private static String ipToStr(String str){ Long l = Long.parseLong(str); StringBuilder sb = new StringBuilder(15); for(int i=0; i<4; i++){ long sub = l & 255; l >>= 8; sb.insert(0, Long.toString(sub)); if(i!=3){ sb.insert(0,"."); } } return sb.toString(); } }