题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
分别编写ip转换十进制函数,及十进制转换ip函数, 具体代码如下:
//编写ip转换成十进制的函数 function ipToDecimal(string) { //将输入ip通过split()方法转换成数组 let arr = string.split('.') //新建newArr数组存储之后转换过的新元素 let newArr = [] //遍历数组 for (let i = 0; i < arr.length; i++) { //通过padStart()方法将转换之后的二进制数据用“0”补齐八位数 newArr.push(parseInt(arr[i]).toString(2).padStart(8, '0')) } //将数组中八位数的二进制数据通过join()方法合并,再最终转换为十进制数据输出 let result = parseInt(newArr.join(''), 2); //返回最终十进制数据 return result } function decimalToIp(string) { //将输入字符串转换为二进制数据,并通过padStart()方法补齐32位; let binary =parseInt(string).toString(2).padStart(32, '0'); //新建数组arr以便存储之后的ip数据 let arr = []; //以8为单位遍历刚刚得到的字符串 for (let i = 0; i < 25; i += 8) { //通过substr()方法将字符串分割为4个8位数的二进制数据,并将其转换为十进制数据依次存入数组arr中 arr.push(parseInt(binary.substr(i, 8), 2)) } //通过join()方法将数组arr转换为ip格式 return arr.join('.') ; } var line1 = readline(); console.log(ipToDecimal(line1)); var line2 = readline(); console.log(decimalToIp(line2));