将数字转换为完整的二进制八位字节

时间:2016-10-13 09:52:36

标签: javascript binary

获取此IP地址:

192.168.1.1

我想将其分解为4个完整的二进制八位字节,所以:

11000000 . 10101000 . 00000001 . 00000001

我所知道的所有转换以及我在其他stackoverflow问题上找到的转换只返回二进制数本身,例如:

当我需要(1 >>> 0).toString(2)

时,

1会返回00000001 当我需要Number(2).toString(2)

时,

10会返回00000010

是否存在我尚未遇到的内置javascript方法,或者我是否需要先根据数字手动添加0?

2 个答案:

答案 0 :(得分:2)

您可以使用带有基数2 Number#toString 方法将数字转换为相应的二进制字符串。

var str = '192.168.1.1';

console.log(
  // Split strings based on delimiter .
  str.split('.')
  // iterate over them 
  .map(function(v) {
    // parse the String and convert the number to corresponding 
    // binary string afterwards add preceding 0's 
    // with help of slice method
    return ('00000000' + Number(v).toString(2)).slice(-8)
      // rejoin the string
  }).join('.')
)

答案 1 :(得分:1)

最简单的解决方案是在答案前面添加零,然后使用负子字符串值从右边开始计数,而不是左边......

alert(("00000000" + (1 >>> 0).toString(2)).substr(-8));