2012-09-06 27 views
4

我想使用JavaScript將DEC編號轉換爲HEX。如何在JavaScript中將DEC轉換爲HEX?

我想轉換的數量是28

我已經嘗試使用:

function h2d(h) {return parseInt(h,16);} 

但是它返回40

我也嘗試使用:

function d2h(d) {return d.toString(16);} 

但是它返回28

最終結果應該返回1C,但我似乎無法解決。

有誰知道我哪裏出了問題?

+0

參見:https://stackoverflow.com/questions/57803/how-to-convert-decimal-to-hex-in-javascript – hippietrail

回答

20

這聽起來像你遇到麻煩,因爲你的投入是當你正在尋找一個字符串一個號碼。試着改變你的D2H()的代碼看起來像這樣,你應該設置:

function d2h(d) { return (+d).toString(16); } 

加號(+)可以迫使一個變量是一個數的速記方法。只有Number的toString()方法將採用基數,String不會。此外,您的結果將是小寫,所以你可能要迫使它使用toUpperCase()爲大寫:

function d2h(d) { return (+d).toString(16).toUpperCase(); } 

那麼結果將是:

d2h("28") //is "1C" 
+0

你有我的投票。 :) – Aust

+0

謝謝,那是我做錯了,這是一個字符串不是數字。 – Aaron

+1

除了一元'+',你還可以使用Number作爲函數:'Number(d).toString(16)',這對維護可能更好,因爲它更明顯發生了什麼。或不。 – RobG

2

重複的問題

(28).toString(16) 

您所做的錯誤是,「28」是一個字符串,而不是數字。你應該把它看作一個數字。人們通常不應該期望的是,在進行轉換之前,語言能夠將字符串解析爲一個整數(呃...我想在JavaScript中期待另一種方式是合理的)。

+0

它返回28而不是1C,不確定你的意思是重複的問題,因爲我無法讓它工作。 – Aaron

+0

@Aaron:不,它返回「1C」。你應該複製粘貼上面的行。 – ninjagecko

0

D2H()的書面應該很好地工作:

js> var d=28 
js> print(d.toString(16)) 
1c 

你怎麼測試呢?

此外,40是D2H(28)的預期輸出,由於十六進制的「28」是十進制40