2013-04-21 29 views
25

這裏是一個新手!想知道爲什麼下面的轉換失敗!Javascript中的字符串轉換(小數點到二進制)

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

如果d輸入是32 ..我得到32 d警報消息太:/

+1

這就是我所期待的事情發生。你期待這樣做,它不這樣做? – greg84 2013-04-21 15:39:22

+0

將32轉換爲顯示二進制數的字符串! – 2013-04-21 15:41:28

回答

36

嘗試

(+num).toString(2) 

Number(num).toString(2) 

parseInt(num, 10).toString(2) 

任何這些應該更好地爲您。

的問題是,JavaScript的Number對象的toString方法重寫Object對象的toString方法接受一個可選的基數作爲參數來提供你正在尋找的功能。 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

+0

所以這樣做是一樣的權利?它將字符串32轉換爲整數,然後執行二進制轉換。 – 2013-04-21 15:48:04

+0

它也可以工作:)謝謝Andbdrew! – 2013-04-21 15:49:35

+0

爲什麼不decnum.toString(2)沒有所有的前戲 – foreyez 2014-07-03 14:44:23

5

它轉換爲一個整數的第一。目前,您正在將字符串轉換爲二進制表示形式。

num = +num; 
+0

將其轉換爲int。然後,Javascript可以將其轉換爲二進制字符串。 – christopher 2013-04-21 15:46:36

+0

它的工作原理!謝謝克里斯:) – 2013-04-21 15:46:55

+0

好吧。請標記任何一個答案是正確的。很高興我們可以提供幫助。 – christopher 2013-04-21 15:47:56

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)); 
18

有了這個功能,你可以指定輸出的長度。例如decbin(7,4)產生0111

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

demo

6

這是我的解決方案,不使用parseInt函數,而是示出了十進制的二進制轉換背後的邏輯的方法。

此方法打印的位到陣列以後可能打印出,如果你想:

var number = 156; 
var converted = []; 

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

轉換的陣列將現在顯示像這樣:

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

這當然轉換回156

相關問題