27

这里是新手!想知道为什么以下转换失败!

var num = prompt("Enter num");
alert(num.toString(2));

如果 num 输入为 32。我也收到 32 作为 num 警报消息。

4

5 回答 5

41

尝试

(+num).toString(2)

,

Number(num).toString(2)

或者

parseInt(num, 10).toString(2)

其中任何一个都应该更适合您。

问题是toStringjavascriptNumber对象的方法会覆盖对象的toString方法Object以接受可选的基数作为参数来提供您正在寻找的功能。该String对象不会覆盖ObjecttoString方法,因此传入的任何参数都将被忽略。

有关这些对象的更多详细信息,请参阅 Mozilla 的文档:

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number/toString https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String#Methods

或 W3 学校:

http://www.w3schools.com/jsref/jsref_tostring_number.asp http://www.w3schools.com/jsref/jsref_obj_string.asp

于 2013-04-21T15:42:27.847 回答
20

使用此功能,您可以指定输出的长度。

例如decbin(7,4)产生0111.

function decbin(dec,length){
  var out = "";
  while(length--)
    out += (dec >> length ) & 1;    
  return out;  
}

演示

于 2013-09-16T11:38:24.447 回答
7

这是我不使用 parseInt 的解决方案,而是一种显示将十进制转换为二进制背后的逻辑的方法。

此方法将位打印到数组中,如果您愿意,您可以稍后打印出来:

var number = 156;
var converted = [];

while(number>=1) {
    converted.unshift(number%2);
    number = Math.floor(number/2);
}

转换后的数组现在将如下所示:

[1,0,0,1,1,1,0,0]

这当然会转换回 156。

于 2014-11-29T03:10:19.777 回答
6

/** 将十进制数转换为二进制数 **/

var toBinary = function(decNum){
    return parseInt(decNum,10).toString(2);
}

/** 将二进制数转换为十进制数 **/

var toDecimal = function(binary) {
    return parseInt(binary,2).toString(10);
}

终于用上了

var num= prompt("Enter num"); 
alert(toBinary(num));
于 2013-06-26T03:11:35.500 回答
5

首先将其转换为整数。目前,您正在将字符串转换为二进制表示。

num = +num;
于 2013-04-21T15:41:50.567 回答