题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
http://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while (scan.hasNext()) {
String s1 = scan.nextLine();
String s2 = scan.nextLine();
solution1(s1);
solution2(s2);
}
}
public static void solution1(String s) {
String[] arr = s.split("\\.");
StringBuffer sb = new StringBuffer();
for (String s1 : arr) {
int n = Integer.parseInt(s1);
String str = Integer.toBinaryString(n);
StringBuffer sb1 = new StringBuffer();
int dif = 8 - str.length();
while (dif > 0) {
sb.append(0);
dif--;
}
sb.append(str);
}
long p = Long.parseLong(sb.toString(), 2);
System.out.println(p);
}
public static void solution2(String s) {
String binary = Long.toBinaryString(Long.parseLong(s));
StringBuffer sb = new StringBuffer();
int dif = 32 - binary.length();
while (dif > 0) {
sb.append(0);
dif--;
}
sb.append(binary);
binary = sb.toString();
String s1 = binary.substring(0, 8);
String s2 = binary.substring(8, 16);
String s3 = binary.substring(16, 24);
String s4 = binary.substring(24);
int n1 = Integer.parseInt(s1, 2);
int n2 = Integer.parseInt(s2, 2);
int n3 = Integer.parseInt(s3, 2);
int n4 = Integer.parseInt(s4, 2);
StringBuffer res = new StringBuffer();
res.append(n1);
res.append(".");
res.append(n2);
res.append(".");
res.append(n3);
res.append(".");
res.append(n4);
System.out.println(res.toString());
}
}