题解 | #整数与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);
        while (in.hasNext()) {
            String target = in.next();
            String res;
            //区分ip-》整数 or 整数-》ip
            String[] split = target.split("\\.");
            if (split.length == 1) {
                res = numberToIp(target);
            } else {
                res = ipToNumber(target);
            }
            System.out.println(res);

        }
    }

    public static String numberToIp(String target) {
        String s = tenToTwo(target);
        if (s.length()<32){
            int other = 32 - s.length();
            StringBuilder stringBuilder = new StringBuilder();
            for (int i1 = 0; i1 < other; i1++) {
                stringBuilder.append("0");
            }
            s=stringBuilder+s;
        }
        StringBuilder res = new StringBuilder();
        for (int i = 0,j=8; j <= 32;i=i+8,j=j+8) {
            String two=s.substring(i,j);
            String ten = twoToTen(two);
            res.append(ten).append(".");
        }
        return res.substring(0,res.length()-1);
    }

    public static String ipToNumber(String target) {
        StringBuilder res = new StringBuilder();
        String[] split = target.split("\\.");
        for (String s : split) {
            String two = tenToTwo(s);
            int length = two.length();
            if (length < 8) {
                int other = 8 - length;
                StringBuilder stringBuilder = new StringBuilder();
                for (int i1 = 0; i1 < other; i1++) {
                    stringBuilder.append("0");
                }
                two = stringBuilder + two;
            }
            res.append(two);

        }
        return twoToTen(res.toString());
    }

    public static String tenToTwo(String tar) {
        return Long.toString(Long.parseLong(tar), 2);
    }

    public static String twoToTen(String tar) {
        return Long.parseLong(tar, 2) + "";
    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务