首页 > 试题广场 >

二进制转换

[编程题]二进制转换
  • 热度指数:39858 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
将给定数字转换成二进制字符串。如果字符串长度不足 8 位,则在前面补 0 到满8位。
示例1

输入

65

输出

01000001
推荐
首先通过toString方法将num转为2进制数形式,然后判断其长度是否足够8位。如不足8位,则声明一个“0000000”字符串用于补0,因为目标的2进制数形式最少为一位,因此最多只需要7个0;通过slice方法对“0000000”进行截取,然后将其结果加在目标前面即可。
function convertToBinary(num) {
     //转换为2进制格式
     var s = num.toString(2);
     //获得2进制数长度
     var l = s.length;
     if(l<8){
         //声明一个字符串用于补满0
         var s1 = "0000000";
         var s2 = s1.slice(0,8-l);
         s = s2+s;  
     }
     return s;
 }


编辑于 2015-08-19 10:51:06 回复(31)
function convertToBinary(num) {
  return ('00000000'+num.toString(2)).substr(-8);
}

发表于 2016-08-29 17:30:37 回复(2)
个人认为还应该考虑到大于2的八次方(256)的num
function convertToBinary(num) {
var a=num.toString(2).split("");    
    while(a.length%8!=0)
    {
        a.unshift("0");
    }
    return a.join("");    
}

发表于 2018-07-13 14:48:26 回复(0)
function convertToBinary(num) {
    var str = num.toString(2);
    while (str.length < 8) {
        str = '0' + str;
    }
    return str;
    
    //方法二
    return '00000000'.slice(num.toString(2).length) + num.toString(2);
}

发表于 2022-01-07 11:14:22 回复(0)
function convertToBinary(num) {
        //先转化为二进制字符串
      let str=num.toString(2)
        //转化为数组使用数组的方法
      str=Array.from(str)

      while(str.length<8){
        str.unshift('0')
      }
    //最后再返回字符串
      return str.join('')
  
发表于 2021-08-19 19:50:42 回复(0)
function convertToBinary(num) {
    var str = num.toString(2)
    str = str.padStart(8,'0')
    return str
}
发表于 2021-08-08 11:20:55 回复(0)
1. 利用toString 和 字符串重复生成的方法
function convertToBinary(num) {
    let str = num.toString(2)
    let distanceLen = 8 - str.length
    // let zero = new Array(distanceLen + 1).join('0') // 另一种生成重复字符的方法
    let zero = ('0').repeat(distanceLen) // ES6生成重复字符的方法
    return zero + str
}


发表于 2021-07-17 23:21:05 回复(0)
  function convertToBinary(num) {
            var a = num.toString(2)
            for (i = a.length; i < 8; i++) {
                a = "0" + a
                break;
            }
            return a
        }
发表于 2021-06-25 17:46:04 回复(0)
一种方法:
function convertToBinary(num) {
    let arr = [];
    while(num / 2 > 0) {
        arr.push(num % 2);
        num = Math.floor(num / 2);
    }
    let n = arr.length;
    if(n < 8) {
        arr.length = 8;
        arr.fill(0,n,8);
    }
    return arr.reverse().join('');
}


发表于 2021-03-18 21:36:43 回复(0)
function convertToBinary(num) {
  let s=num.toString(2);
  if(s.length<8){
      let n=8-s.length;
      s=(''+(10**n)).slice(1)+s
  } 
  return s
}
这样没问题呀,咋就不给过呢?
发表于 2020-12-05 15:37:42 回复(0)
function convertToBinary(num) {
  var str=num.toString(2)
  var res=str.padStart(8,0)
  return res
}
发表于 2020-08-07 20:02:08 回复(0)
function convertToBinary(num) {
    return ("0000000" + num.toString(2)).slice(-8);
}

发表于 2020-03-25 17:32:37 回复(0)
function convertToBinary(num) {
    var ret = '';
    while (num !== 0) {
        ret = (num & 1) + ret;
        num >>= 1;
    }
    for (let i = (8 - ret.length); i > 0; --i) {
        ret = '0' + ret;
    }
    
    return ret;
}

不使用内置函数


发表于 2019-11-05 10:59:57 回复(0)
/*function convertToBinary(num) { // 这个ES6可以实现,但在这通不过测试
    return num.toString(2).padStart(8, '0');
}*/
function convertToBinary(num) {
    var s = num.toString(2)
    return '0'.repeat(8-s.length)+s; // "0"*(8-s.length)不行,"0"会被转为0
}

发表于 2019-11-04 23:30:13 回复(0)
function convertToBinary(num) {
    var bin, str = '';
    // 先将num转换成二进制字符串
    while(num){
        bin = num % 2;
        str += bin;
        num = Math.floor(num / 2);
    }
    // 判断字符串长度 不足8补零
    if(str.length < 8){
        str = '00000000'.slice(0, 8 - str.length) + str;
    }
    return str;
}


各位大佬我的哪里错了吗,我输入65,测试是对的,但提交不能通过。。。。
发表于 2019-06-05 09:10:36 回复(1)
function convertToBinary(num) {
    var res = num.toString(2);
    //使用while判断长度,+连接符连接字符串,直到退出循环
    while(res.length <8){
        res ='0' +res;
    }
    return res;
}
发表于 2018-11-03 13:44:53 回复(0)
function convertToBinary(num) {
return (function(){
num=num.toString(2).split('');
for(var i =0;i<8-num.length;i++){
num.unshift('0');
}
return num.join('');
}())
}
总觉得用if实在是不够巧妙

发表于 2018-09-22 01:47:59 回复(0)
//用位运算每次移出一位放入数组中,然后将所得数组reverse一下(这样得到的序列才是正确的二进制序列),最后将数组转换为字符串输出。
function convertToBinary(num) {
    var base2 = [];
    var i = 0;
    while(i<8){
        base2.push(num & 1);
        num = num >> 1;
        i ++;
    }
    base2.reverse();
    var basee = base2.join("");
    return basee;
}

发表于 2018-08-30 15:26:31 回复(0)
function convertToBinary(num) {
      var binary = [0,0,0,0,0,0,0,0];
    var len = binary.length-1;
    while(num){
        binary[len] = num%2;
        num = Math.floor(num / 2);
        len-=1;
    }
    
    return binary.join("")
}

发表于 2017-10-11 16:13:10 回复(0)
function convertToBinary(num) {     return ("00000000" + parseInt(num).toString(2)).slice(-8);
}

来一个妖娆的

发表于 2017-09-27 19:42:55 回复(1)
function convertToBinary(num) {
        return '0'.padEnd(8, num.toString(2))
    }
发表于 2017-09-20 14:01:10 回复(2)