题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
代码逻辑比较简单,不注释了。
import java.util.*; import java.lang.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNext()) { // 注意 while 处理多个 case String[] sa = in.nextLine().split("\\."); String sbs=in.nextLine(); long sb =Long.parseLong(sbs); String s=""; for(int i=0;i<sa.length;i++){ int sai=Integer.parseInt(sa[i],10); String s2=Integer.toBinaryString(sai); int end=8-s2.length(); for(int j=0;j<end;j++){ s2="0"+s2; } s=s.concat(s2); } long saout=Long.parseLong(s,2); String sb2=Long.toBinaryString(sb); int endb=32-sb2.length(); for(int k=0;k<endb;k++){ sb2="0"+sb2; } String[] sub=new String[4]; sub[0]=sb2.substring(0,8); sub[1]=sb2.substring(8,16); sub[2]=sb2.substring(16,24); sub[3]=sb2.substring(24); int out0=Integer.parseInt(sub[0],2); int out1=Integer.parseInt(sub[1],2); int out2=Integer.parseInt(sub[2],2); int out3=Integer.parseInt(sub[3],2); String sbout=String.valueOf(out0)+"."+String.valueOf(out1)+"."+String.valueOf(out2)+"."+String.valueOf(out3); System.out.println(saout); System.out.println(sbout); } } }