题解 | #整数与IP地址间的转换#

整数与IP地址间的转换

https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea

const readline = require('readline')
const r1 = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
})
r1.on('line', function (line) {
  var str = line
  var list = str.split('.')
  if (str.includes('.')) {
    for (let i in list) {
      // toString()方法可以根据所传递的参数把数值转换为对应进制的数字字符串。参数范围为 2~36 之间的任意整数。
      list[i] = parseInt(list[i]).toString(2)
      //转化为二进制时,因为在0-255间,所以八位一组,不够的前面补0
      list[i] = '0'.repeat(8 - list[i].length) + list[i]
    }
    var m = ''
    for (let i in list) {
      m = m + list[i]
    }
    m = parseInt(m, 2)
    console.log(m)
  } else {
    var m = parseInt(str).toString(2)
    // 因为ip根据'.'划分的话有四组,每组0-255间,所以有8位,总共32位
    m = '0'.repeat(32 - m.length) + m
    var arr = []
    for (let i = 0; i < 4; i++) {
      arr[i] = m.slice(i * 8, i * 8 + 8)
      arr[i] = parseInt(arr[i], 2)
    }
    var arr1 = arr.join('.')
    console.log(arr1)
  }
})

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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