题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
import java.util.*;
// 最简单的思路,按题目意思进行转换,不需要高深的技巧,唯一要注意的是整数不止int 还有Long
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String line = in.nextLine();
String[] ips = line.split("\\.");
StringBuilder sb = new StringBuilder();
for(String ip : ips){
String br = Integer.toBinaryString(Integer.valueOf(ip));
String bf = "";
if(br.length()<8){
bf = "000000000".substring(0,8-br.length());
}
sb.append(bf).append(br);
}
System.out.println(Long.parseLong(sb.toString(),2));
Long ipNum = Long.valueOf(in.next());
String br = Long.toBinaryString(ipNum);
StringBuilder temp = new StringBuilder();
int idx =0 ;
List<Integer> list = new ArrayList();
for(int i = br.length()-1;i>-1;i--){
idx++;
temp.append(br.charAt(i));
if(idx==8){
idx=0;
list.add(Integer.parseInt(temp.reverse().toString(),2));
temp = new StringBuilder();
}
}
if(temp.length()!=0){
String s = "000000000".substring(0,8-temp.length())+temp.reverse().toString();
list.add(Integer.parseInt(s,2));
}
for(int i = list.size()-1;i>-1;i--){
System.out.print(list.get(i));
if(i!=0){
System.out.print(".");
}
}
}
}

查看20道真题和解析