题解 | #整数与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;

    }
}

全部评论

相关推荐

点赞 评论 收藏
分享
Java大菜狗:纯纯招黑奴,一天还不到两百那么多要求,还不迟到早退,以为啥啊,给一点工资做一堆活,还以不拖欠员工工资为荣,这是什么值得骄傲的事情吗,纯纯***公司
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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