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

//转二进制,补齐个数
function convertToBinary(num, n) {
    var a = typeof num === "number" ? num.toString(2) : Number(num).toString(2);
    var str = "0";
    // repeat(n) 生成重复元素n次
    return a.length < n ? str.repeat(n - a.length) + a : a;
}

//字符串按个数切分数组保存
function splitString(string, n) {
    let resArray = [];
    for (let i = 0; i < string.length; ) {
        resArray.push(string.slice(i, (i += n)));
    }
    return resArray;
}

void (async function () {
    // Write your code here
    while ((line = await readline())) {
        if (line.indexOf(".") != -1) {
            //输入合法的 IP 序列
            let res = line.split(".");
            let Binary = "";
            for (let i = 0; i < res.length; i++) {
                //转成补齐8位的二进制
                Binary = Binary + convertToBinary(res[i], 8);
            }
            console.log(parseInt(Binary, 2));
        } else {
            //输出转换成10进制的IP地址
            let Binary = convertToBinary(line, 32);
            //32位分成每8个一组
            let result = splitString(Binary, 8);
            for (let i = 0; i < result.length; i++) {
                result[i] = parseInt(result[i], 2);
            }
            console.log(result.join("."));
        }
    }
})();

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务