题解 | #整数与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");
}
}
}
}
}

