题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
http://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input =new Scanner(System.in); while (input.hasNextLine()) { String string=input.nextLine(); if (string.contains(".")) { String[] strings=string.split("\\."); // for (int i = 0; i < strings.length; i++) { // System.out.println(strings[i]); // // } StringBuffer buffer=new StringBuffer(); for (int i = 0; i < strings.length; i++) { int a=Integer.valueOf(strings[i]); // System.out.println(a); String string2=""; if (a!=0) { for (int j = 0; a/2>0; j++) { string2=a%2+string2; a=a/2; } string2="1"+string2; }else { string2="00000000"; } // System.out.println(string2); if (string2.length()<8) { int n=string2.length(); for (int j = 0; j < 8-n; j++) { string2="0"+string2; } // System.out.println(string2); } buffer.append(string2); } // System.out.println(buffer.toString()); System.out.println(Long.parseLong(buffer.toString(),2)); } else { long a=Long.valueOf(string); String string2=""; if (a!=0) { for (int j = 0; a/2>0; j++) { string2=a%2+string2; a=a/2; } string2="1"+string2; if (string2.length()<32) { int n=string2.length(); for (int j = 0; j < 32-n; j++) { string2="0"+string2; } // System.out.println(string2); } for (int i = 0; i < 3; i++) { String string3=string2.substring(8*i,8*(i+1)); System.out.print(Integer.parseInt(string3,2)+"."); } System.out.print(Integer.parseInt(string2.substring(8*3,8*(3+1)),2)); }else { System.out.println("0.0.0.0"); } } } } }