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

整数与IP地址间的转换

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

本题考查点在进制转换上

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    let n_IP = await readline();
    let n_num = await readline();

    // ip -> 二进制串 -> 十进制数字
    let ip_arr = n_IP.split(".");
    let ip_erjinzhi_str = ""; // 10进制转换为2进制后拼接的字符串
    for (let i = 0; i < ip_arr.length; i++) {
        let tmp = parseInt(ip_arr[i]).toString(2); // 十进制转换为二进制
        tmp = tmp.padStart(8,'0');
        ip_erjinzhi_str += tmp;
    }
    let num_er_shi = er_str_shi(ip_erjinzhi_str); // 需要打印的十进制数字

    // 十进制数字->二进制串-> ip
    let shi_to_er_str = parseInt(n_num).toString(2);
    shi_to_er_str = shi_to_er_str.padStart(32,'0');
    let num_to_ip = "";
    for (let f = 0; f < shi_to_er_str.length; f += 8) {
        let tc = shi_to_er_str.substring(f, f + 8);
        let tc_num_10 = er_str_shi(tc);
        num_to_ip = num_to_ip + tc_num_10 + '.';
        
    }
    num_to_ip = num_to_ip.substring(0,num_to_ip.length-1); // 去掉最后一个点

    console.log(num_er_shi);
    console.log(num_to_ip);
})();

// 将二进制字符串转换成10进制, 有两种方法
function er_str_shi(str) {
    // 第二种 简单方法,0b开头表示二进制
    let bin_str = '0b'+str;
    let shi_num = Number(bin_str);
    return shi_num;

    // 第一种笨方法 遍历累加
    // let str_arr = str.split("");
    // let num = 0;
    // for (let j = str_arr.length - 1; j >= 0; j--) {
    //     let wei = str_arr.length - j; // 当前在倒数第几位
    //     if (str_arr[j] == "1") {
    //         let need2 = wei - 1;
    //         if (need2 == 0) {
    //             // 最后一位
    //             num += 1;
    //         } else {
    //             let chengEr = 1;
    //             for (let k = 0; k < need2; k++) {
    //                 chengEr *= 2;
    //             }
    //             num += chengEr;
    //         }
    //     }
    // }
    // return num;
}

全部评论

相关推荐

点赞 评论 收藏
分享
预计下个星期就能开奖吧,哪位老哥来给个准信
华孝子爱信等:对接人上周说的是这周
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务