获取此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?
答案 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));