import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { //整数与Ip地址之间的转换 public static void main(String[] args) { Scanner sc = new Scanner(System.in); String strIP =sc.nextLine(); String strTenIP = sc.nextLine(); System.out.println(TranslationTenIP(strIP)); System.out.println(TranslationBinaryIP(strTenIP)); } private static String TranslationBinaryIP(String strTenIP) { //注意Int的范围int的取值范围: -2^31~2^31,不够2的32次方,所以要改成long. String s = Long.toBinaryString(Long.parseLong(strTenIP));//十进制,转换成二进制 StringBuilder TenIP = new StringBuilder(); //不够32位要在前面补上0 for (int i = 0; i < 32-s.length(); i++) { TenIP.insert(0,"0"); } TenIP.append(s);//拼接 int[] IntIP = new int[4]; StringBuilder IP = new StringBuilder(); for (int i = 0; i < 4; i++) { IntIP[i]=Integer.parseInt(TenIP.substring(i*8,i*8+8),2);//二进制数每八位分割开,然后转换成10进制。 IP.append(IntIP[i]); if(i<3) { IP.append("."); } } return IP.toString(); } public static Long TranslationTenIP(String strIP){ StringBuilder TenIP = new StringBuilder(); String[] chIP = strIP.split("\\.");//不能直接以.去分割,不能识别。 for (int i = 0; i < chIP.length; i++) { String s = Integer.toBinaryString(Integer.parseInt(chIP[i]));//十进制转换成二进制,不够8位,要补齐0. for (int j = 0; j < 8-s.length(); j++) { TenIP.append("0"); } TenIP.append(s);//拼接在一起 } //注意Int的范围int的取值范围: -2^31~2^31,不够2的32次方,所以要改成long. Long n = Long.parseLong(TenIP.toString(),2);//把二进制转换成十进制 return n; } }