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

Convert Numbers to FULL binary octets

本文关键字:二进制 八位 数字 转换      更新时间:2023-09-26

取此IP地址:

192.168.1.1

我想把它分解成4个完整的二进制八位字节,所以:

11000000 . 10101000 . 00000001 . 00000001 .


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

当我想要00000001时,(1 >>> 0).toString(2)返回1

当我想要00000010时,Number(2).toString(2)返回10


是否有一个内置的javascript方法,我还没有遇到,或者我需要手动添加0之前取决于数字?

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

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('.')
)

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

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