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