题解 | #整数与IP地址间的转换#

整数与IP地址间的转换

https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
          while (scanner.hasNext()) {
            String input = scanner.nextLine();
            Object res ;
            if (input.contains(".")) {
                res = getIpLong(input);
            } else {
                res = getIpStr(input);
            }
            System.out.println(res);
        }

    }
    private static String getIpStr(String input) {
        Long ipNum = Long.parseLong(input);
        String binaryString = Long.toBinaryString(ipNum);
        binaryString = String.format("%32s", binaryString).replace(" ", "0");
        StringBuilder result = new StringBuilder();
        for (int i = 0; i < binaryString.length(); i = i + 8) {
            String str = binaryString.substring(i, i + 8);
            int num = Integer.parseInt(str, 2);
            result.append(num).append(".");
        }

        result.deleteCharAt(result.length() - 1);
        return result.toString();
    }
    private static long getIpLong(String input) {


        String[] ip = input.split("\\.");
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < ip.length; i++) {
            String ipNum = ip[i];
            String str = Integer.toBinaryString(Integer.parseInt(ipNum));
            str = String.format("%8s", str).replace(" ", "0");
            builder.append(str);


        }

        return Long.parseLong(builder.toString(), 2);
    }
}

全部评论

相关推荐

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