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

整数与IP地址间的转换

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

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        /**********************************************************************************/
        // IPv4 转 整数
        String[] strs = scan.nextLine().split("\\.");
        StringBuffer sb = new StringBuffer("");
        for (String str : strs) {
            sb.append(DecimalToBinary(str, 8));
        }
        System.out.println(BinaryToDecimal(new String(sb), 31));
        /**********************************************************************************/
        // 整数 转 IPv4
        String decimal = scan.nextLine();
        String binary = DecimalToBinary(decimal, 32);
        System.out.println(BinaryToIPv4(binary));
    }
    public static String DecimalToBinary(String str, int k) {
        long num = Long.valueOf(str);
        StringBuffer sb = new StringBuffer("");
        while (0 != num) {
            sb.append(num % 2);
            num /= 2;
        }
        while (sb.length() != k) {
            sb.append("0");
        }
        sb.reverse();
        return new String(sb);
    }
    public static long BinaryToDecimal(String str, int k) {
        long ans = 0l;
        String[] strs = str.split("");
        for (int i = strs.length - 1; i > -1; i--) {
            if (Integer.valueOf(strs[i]) == 1) {
                ans += Math.pow(2, k - i);
            }
        }
        return ans;
    }
    public static String BinaryToIPv4(String str) {
        StringBuffer sb = new StringBuffer("");
        for (int splitIndex = 8; splitIndex <= 32; splitIndex += 8) {
            String tmp = str.substring(splitIndex - 8, splitIndex);
            if (splitIndex == 32) {
                sb.append(BinaryToDecimal(tmp, 7));
                break;
            }
            tmp = BinaryToDecimal(tmp, 7) + ".";
            sb.append(tmp);
        }
        return new String(sb);
    }
}
全部评论
该牛油正在参与牛客写题解薅羊毛的活动,牛币,周边,京东卡超多奖品放送,活动进入倒计时!快来捡漏啦https://www.nowcoder.com/discuss/888949?source_id=profile_create_nctrack&channel=-1
点赞 回复 分享
发布于 2022-04-20 16:53

相关推荐

找个工作&nbsp;学历是要卡的&nbsp;要求是高的&nbsp;技能不足是真的&nbsp;实习经验是0的&nbsp;简历无处可写是事实的&nbsp;钱不好赚是真的&nbsp;想躺平又不敢躺&nbsp;也不甘心躺&nbsp;怕自己的灵感和才华被掩埋甚至从未被自己发现&nbsp;又质疑自己是否真正有才华
码农索隆:你现在啊,你心里都明白咋回事,但是你没办法改变现状,一想到未来,你又没有信心狠下心来在当下努力。 得走出这种状态,不能一直困在那里面,哪不行就去提升哪,你一动不动那指定改变不了未来,动起来,积少成多才能越来越好
点赞 评论 收藏
分享
每晚夜里独自颤抖:要求太多的没必要理
点赞 评论 收藏
分享
06-19 19:06
门头沟学院 Java
码农索隆:别去东软,真学不到东西,真事
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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