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

整数与IP地址间的转换

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

使用Long类型

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //IP地址
        String str1 = sc.nextLine();
        //10进制IP地址
        String str2 = sc.nextLine();

        //Q1. 10进制转2进制
        String[] str1s = str1.split("\\.");
        //生成二进制串
        StringBuffer binarySb = new StringBuffer();
        for (String s : str1s) {
            String binaryStr = Integer.toBinaryString(Integer.parseInt(s));
            //补齐到8位
            String completeBinaryStr = Main.autoComplete(binaryStr, "0", 8);
            binarySb.append(completeBinaryStr);
        }
        //二进制串转十进制
        Long decimalIp = Long.parseLong(binarySb + "", 2);
        System.out.println(decimalIp);
        //Q2. 2进制 转 10进制
        //int binaryIP
        String binaryIP = Long.toBinaryString(Long.parseLong(str2));
        String completedIP = Main.autoComplete(binaryIP, "0", 32);
        StringBuffer sb = new StringBuffer();
        //seperate
        String sperateStr = "";
        for (int i = 0; i < 4; i++) {
            sperateStr = completedIP.substring(i * 8, (i + 1) * 8);
            int sperateIp = Integer.parseInt(sperateStr, 2);
            sb.append(sperateIp + ".");
        }
        System.out.println(sb.substring(0, sb.length() - 1));
    }

    public static String autoComplete(String str, String symbol, int fixedLen) {
        int strLen = str.length();
        int neededLen = fixedLen - strLen;
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < neededLen; i++) {
            sb.append(symbol);
        }
        return sb + str;

    }
}

全部评论

相关推荐

07-09 20:50
门头沟学院 Java
码农索隆:1.教育背景和荣誉证书合二为一。 2.获奖项目理一遍,你做了什么,对你求职的岗位有什么帮助,没有就删掉。 3.技能特长和教育背景交换位置。 4.技能特长写的太差,上网上找简历参考。都不用问你别的,一个redis就能把你问住,写写你具体会redis哪些方面的知识。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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