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