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

整数与IP地址间的转换

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


public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            String str = sc.next();
            long numIP = sc.nextLong();
            System.out.println(ipToNum(str));
            System.out.println(numToIp(numIP));
        }
    }

    public static long ipToNum(String str) {
        String[] s = str.split("\\.");
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < s.length; i++) {
            StringBuilder sb1 = new StringBuilder(Long.toBinaryString((Long.parseLong(s[i]))));
            sb1.reverse();
            int len = sb1.length();
            while (len < 8) {
                sb1.append("0");
                len++;
            }
            sb.append(sb1.reverse().toString());
        }
        String string = sb.toString();
        long num = Long.parseLong(string,2);
        return num;
    }

    public static String numToIp(long num) {
        String s = Long.toBinaryString(num);
        StringBuilder sb = new StringBuilder(s);
        sb = sb.reverse();
        if(sb.length() % 8 == 0){

        }else {
            int len = 8 - sb.length() % 8;
            while (len > 0) {
                sb.append("0");
                len--;
            }
        }
        sb = sb.reverse();
        s = sb.toString();
        StringBuilder sb1 = new StringBuilder();
        while (s.length() > 0) {
            if (s.length() == 8) {
                sb1.append(Long.parseLong(s.substring(0, 8), 2));
            } else {
                sb1.append(Long.parseLong(s.substring(0, 8), 2)).append(".");
            }
            s = s.substring(8);
        }
        return sb1.toString();
    }
}
全部评论

相关推荐

辅助位:定时器项目都被用烂了,感觉
点赞 评论 收藏
分享
11-17 11:15
门头沟学院 Java
金山办公终于发offer了,但薪资和平台都不如已有的offer打算拒了,A不了薪资,不满意直接拒了,留给需要的人嘿嘿嘿时间线:10.14线下一面&nbsp;,10.23线上二面,下午发测评,11月1日HR面,11月14日电话谈薪,11月17日直接发offer
star__plat...:好兄弟干的好啊,解气。金山第一次笔难度高的离谱,第二次简单的离谱全A了,用人部门筛选中估计最后还是要挂我,就这今早智联招聘还给我发信息让我投
offer帮选
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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