这里是新手!想知道为什么以下转换失败!
var num = prompt("Enter num");
alert(num.toString(2));
如果 num 输入为 32。我也收到 32 作为 num 警报消息。
这里是新手!想知道为什么以下转换失败!
var num = prompt("Enter num");
alert(num.toString(2));
如果 num 输入为 32。我也收到 32 作为 num 警报消息。
尝试
(+num).toString(2)
,
Number(num).toString(2)
或者
parseInt(num, 10).toString(2)
其中任何一个都应该更适合您。
问题是toString
javascriptNumber
对象的方法会覆盖对象的toString
方法Object
以接受可选的基数作为参数来提供您正在寻找的功能。该String
对象不会覆盖Object
的toString
方法,因此传入的任何参数都将被忽略。
有关这些对象的更多详细信息,请参阅 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
使用此功能,您可以指定输出的长度。
例如decbin(7,4)
产生0111
.
function decbin(dec,length){
var out = "";
while(length--)
out += (dec >> length ) & 1;
return out;
}
这是我不使用 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。
/** 将十进制数转换为二进制数 **/
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));
首先将其转换为整数。目前,您正在将字符串转换为二进制表示。
num = +num;