偶遇算法-IPv4 地址转换成整数

题目

存在一种虚拟 IPv4 地址,由 4 小节组成,每节的范围为 0~255,以#号间隔,虚拟 IPv4 地址可以转换为一个 32 位的整数,例如:128#0#255#255,转换为 32 位整数的结果为 2147549183(0x8000FFFF)。1#0#0#0,转换为 32 位整数的结果为 16777216(0x01000000)。现以字符串形式给出一个虚拟 IPv4 地址,限制第 1 小节的范围为 1~128。

输入描述

输入一行,虚拟 IPv4 地址格式字符串

输出描述

输出一行,按照要求输出整型或者特定字符

代码

function changeIPv4(s) {
  const list = s.split('#');
  let result = 0;
  for (let i = 0; i < list.length; i++) {
    const l = 3 - i;
    const c = Number(list[i]).toString(2) + '0'.repeat(l * 8);
    const n = parseInt(c, 2);
    result += n;
  }
  console.log('result', result);
}

var testList = ['128#0#255#255', '1#0#0#0'];
testList.forEach((v) => {
  changeIPv4(v);
});

猜你喜欢

转载自juejin.im/post/7120602427920744456