题解 | #密码截取#
整数与IP地址间的转换
http://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
import java.util.; import java.io.;
public class Main{
public static void main(String[] args){
InputStreamReader reader= new InputStreamReader(System.in);
try(BufferedReader br = new BufferedReader(reader) ){
String[] ip_parts = br.readLine().trim().split("\\.");
final String number_str = br.readLine();
String number = Long.toBinaryString(Long.parseLong(number_str));
StringBuffer sb = new StringBuffer();
StringBuffer sb2 = new StringBuffer();
for(int i=0 ; i<ip_parts.length ; i++){
String binaryString = Integer.toBinaryString(Integer.parseInt(ip_parts[i]));
while (binaryString.length() % 8 !=0){
binaryString = "0" +binaryString;
}
sb.append(binaryString);
}
while(number.length() % 8 !=0){
number = "0" +number;
}
for (int i =0 ;i<number.length() / 8 ;i++){
String substring = number.substring(i*8, (i+1)*8);
sb2.append(Integer.valueOf(substring,2));
if (i == number.length()/8 -1) continue;
sb2.append(".");
}
System.out.println(Long.parseLong(sb.toString(),2));
System.out.println(sb2);
}catch(IOException e){
System.out.println(e.getMessage());
}
}
}