题解 | #整数与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);
        while (in.hasNextLine()) {
            System.out.println(encrypt(in.nextLine()));
            System.out.println(decode(in.nextLine()));
        }
    }

    private static String encrypt(String str){
        String[] strs = str.split("\\.");

        long result = 0;
        for(String temp : strs){
            Long num = Long.parseLong(temp);
            result = (result << 8) | num;
        }

        return result + "";
    }

    private static String decode(String str){
        Long nums = Long.parseLong(str);
        String val = Long.toBinaryString(nums);

        while(val.length() % 8 != 0){
            val = "0" + val;
        }

        String[] ip_s = new String[4];

        int index = 3;
        while(val.length() > 8){
            String tmp = val.substring(val.length() - 8);
            ip_s[index--] = String.valueOf(Integer.parseUnsignedInt(tmp,2));
            val = val.substring(0,val.length() - 8);
        }

        ip_s[0] = String.valueOf(Integer.parseUnsignedInt(val,2));

        return String.join(".",ip_s);
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务