题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String[] ip = new String(in.nextLine()).split("\\.");
long n = in.nextLong();
//ip转数
String b1 = "";
for (int i = 0; i < 4; i++) {
String binary = new String(Integer.toBinaryString(Integer.parseInt(ip[i]))); //10进制转2进制序列
//不满8位补0
int len = binary.length();
for (int j = 0; j < 8 - len; j++)binary = "0" + binary;
b1 += binary; //拼接
}
System.out.println(Long.parseLong(b1, 2));
//数转ip
String b2 = new String(Long.toBinaryString(n)); //转2进制串
//不满32位补零
int len = b2.length();
for (int i = 0; i < 32 - len; i++) {
b2 = "0" + b2;
}
int[] ipNum = new int[4];
for (int i = 0; i < 4; i++) {
ipNum[i] = Integer.parseInt(b2.substring(i * 8, i * 8 + 8), 2);//2进制转10进制
if (i < 3)System.out.print(ipNum[i] + ".");
else System.out.print(ipNum[i]);
}
}
}
查看2道真题和解析