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

整数与IP地址间的转换

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

const readline = require("readline");

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});

const getMulti = (n: number) => {
    let result = 1;
    while (n) {
        n -= 1;
        result *= 2;
    }
    return result;
};

rl.on("line", function (line) {
    const tokens = line.split(" ");
    const raw = tokens[0];
    const isIp = raw.includes(".");
    const result = isIp ? ipToDecimal(raw) : decimalToIP(raw);
    console.log(result);
});

const ipToDecimal = (raw: string) => {
    const list = raw
        .split(".")
        .map((v: string) => parseInt(v))
        .reverse();
    let sum = 0;
    for (let i = 0, count = list.length; i < count; i++) {
        const cur = list[i];
        const multiple = getMulti(i * 8);
        sum += cur * multiple;
    }
    return sum;
};

const decimalToIP = (raw: string) => {
    let list = [];
    let remainder = parseInt(raw);
    for (let step = 3; step >= 0; step--) {
        const multi = getMulti(step * 8);
        const quotient = Math.floor(remainder / multi);
        remainder = Math.floor(remainder % multi);
        list.push(quotient);
    }
    const result = list.join(".");
    return result;
};

全部评论

相关推荐

找工作勤劳小蜜蜂:自我描述部分太差,完全看不出想从事什么行业什么岗位,也看不出想在哪个地区发展,这样 会让HR很犹豫,从而把你简历否决掉。现在企业都很注重员工稳定性和专注性,特别对于热爱本行业的员工。 你实习的工作又太传统的it开发(老旧),这部分公司已经趋于被淘汰,新兴的互联网服务业,比如物流,电商,新传媒,游戏开发和传统的It开发有天然区别。不是说传统It开发不行,而是就业岗位太少,基本趋于饱和,很多老骨头还能坚持,不需要新血液。 工作区域(比如长三角,珠三角,成渝)等也是HR考虑的因素之一,也是要你有个坚定的决心。否则去几天,人跑了,HR会被用人单位骂死。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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