题解 | #整数与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;
};

全部评论

相关推荐

湫湫湫不会java:1.在校经历全删了2.。这些荣誉其实也没啥用只能说,要的是好的开发者不是好好学生3.项目五六点就行了,一个亮点一俩行,xxx技术解决,xxx问题带来xxx提升。第一页学历不行,然后啥有价值的信息也没有,到第二页看到项目了,第一个项目九点,第二个项目像凑数的俩点。总体给人又臭又长,一起加油吧兄弟
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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