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