题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
import java.util.Scanner;
// 注意类名必须为 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[] st = in.nextLine().split("\\.");
            long in_m = Long.parseLong(in.nextLine());
            String sum = "";
            for (String b : st) {
                String cc = Integer.toBinaryString(Integer.parseInt(b));
                int mm = 8 - cc.length();
                for (int i = 0; i < mm; i++) {
                    sum = sum + "0";
                }
                sum = sum + cc;
            }
            long res = 0;
            for (int i = 0; i < sum.length(); i++) {
                if (sum.charAt(i) == '1') res = res + (long) Math.pow(2, sum.length() - 1 - i);
            }
            StringBuilder stringBuilder = new StringBuilder();
            while (in_m > 0) {
                long yu = in_m % 2;
                stringBuilder.append(yu);
                in_m = in_m / 2;
            }
            int cha = 32 - stringBuilder.length();
            for (int i = 0; i < cha; i++) {
                stringBuilder.append(0);
            }
            stringBuilder.reverse();
            String[] ma = new String[4];
            for (int i = 0; i < 4; i++) {
                ma[i] = stringBuilder.substring(i * 8, i * 8 + 8);
            }
            int[] res2 = new int[4];
            int j = 0;
            for (String b : ma) {
                for (int i = 0; i < b.length(); i++) {
                    if (b.charAt(i) == '1') res2[j] = res2[j] + (int) Math.pow(2,
                                                          b.length() - 1 - i);
                }
                j++;
            }
            System.out.println(res);
            System.out.println(res2[0] + "." + res2[1] + "." + res2[2] + "." + res2[3]);
        }
    }
}
 投递华为等公司10个岗位
投递华为等公司10个岗位 查看12道真题和解析
查看12道真题和解析