题解 | #整数与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));
阿里云成长空间 794人发布
