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

整数与IP地址间的转换

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

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String ipWithDot = in.nextLine();
        Long ipNumber = in.nextLong();
        
        System.out.println(ip2Number(ipWithDot));
        System.out.println(number2Ip(ipNumber));
    }
    public static long ip2Number(String ipWithDot){
        String[] ipArray = ipWithDot.split("\\.");
        StringBuilder sb = new StringBuilder();
        for (String s : ipArray) {// 转二进制
            String str = Integer.toBinaryString(Integer.parseInt(s));
            while(str.length()<8){// 补0
                str = "0" + str;
            }
            sb.append(str);
        }
        return (Long.parseLong(sb.toString(),2));
    }
    public static String number2Ip(long ipNumber){
        // to 2 进制
        String num = Long.toBinaryString(ipNumber);
        // 
        while(num.length()<32){
            // fill with 0
            num = "0"+num;
        }
        int ip1 = Integer.parseInt(num.substring(0,8),2);
        int ip2 = Integer.parseInt(num.substring(8,16),2);
        int ip3 = Integer.parseInt(num.substring(16,24),2);
        int ip4 = Integer.parseInt(num.substring(24,32),2);
        return ip1+"."+ip2+"."+ip3+"."+ip4;
    }
}

注意知识点:

  1. 用点. 进行分割时, 要加反斜杠。
  2. 十进制转换成二进制 用Long.toBinaryString(ipNumber) 或 Integer.toBinaryString(Integer.parseInt(s))
  3. 十进制转16: Integer.toHexString ()
  4. 十进制转8: Integer.toOctalString()
  5. 其它进制转十进制 用Integer.parseInt(n,2); 其中2 表示2进制, 如果是16进制则写16
全部评论

相关推荐

我在朝九晚六双休的联想等你:如果我是你,身体素质好我会去参军,然后走士兵计划考研211只需要200多分。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
正在热议
# 25届秋招总结 #
442405次浏览 4511人参与
# 春招别灰心,我们一人来一句鼓励 #
41942次浏览 531人参与
# 阿里云管培生offer #
120231次浏览 2219人参与
# 地方国企笔面经互助 #
7961次浏览 18人参与
# 同bg的你秋招战况如何? #
76670次浏览 561人参与
# 虾皮求职进展汇总 #
115613次浏览 886人参与
# 北方华创开奖 #
107430次浏览 599人参与
# 实习,投递多份简历没人回复怎么办 #
2454658次浏览 34857人参与
# 实习必须要去大厂吗? #
55771次浏览 961人参与
# 提前批简历挂麻了怎么办 #
149901次浏览 1977人参与
# 投递实习岗位前的准备 #
1195935次浏览 18548人参与
# 你投递的公司有几家约面了? #
33205次浏览 188人参与
# 双非本科求职如何逆袭 #
662208次浏览 7394人参与
# 如果公司给你放一天假,你会怎么度过? #
4753次浏览 55人参与
# 机械人春招想让哪家公司来捞你? #
157628次浏览 2267人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11561次浏览 287人参与
# 发工资后,你做的第一件事是什么 #
12704次浏览 62人参与
# 工作中,努力重要还是选择重要? #
35804次浏览 384人参与
# 参加完秋招的机械人,还参加春招吗? #
20126次浏览 240人参与
# 我的上岸简历长这样 #
452016次浏览 8088人参与
# 实习想申请秋招offer,能不能argue薪资 #
39299次浏览 314人参与
# 非技术岗是怎么找实习的 #
155868次浏览 2120人参与
牛客网
牛客企业服务