5

JavaScript を使用して DEC 番号を HEX に変換しようとしています。

変換しようとしている数値は 28 です。

私は使用してみました:

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

ただし、40を返します

私も使用してみました:

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

ただし、28を返します

最終結果は 1C を返すはずですが、解決できないようです。

私がどこで間違ったのか誰か知っていますか?

4

4 に答える 4

24

数値を探しているときに入力が文字列であるため、問題が発生しているようです。d2h() コードを次のように変更してみてください。設定する必要があります。

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

プラス記号 ( +) は、変数を強制的に Number にするための省略形です。Number のtoString()メソッドのみが基数を取り、String のメソッドは基数を取りません。また、結果は小文字になるため、次を使用して強制的に大文字にしたい場合がありますtoUpperCase()

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

したがって、結果は次のようになります。

d2h("28") //is "1C"
于 2012-09-06T01:30:21.207 に答える
2

重複した質問

(28).toString(16)

あなたが作っているバグは、「28」が数字ではなく文字列であることです。数値として扱う必要があります。一般に、言語が変換を行う前に文字列を整数に解析できると期待するべきではありません (そうですね... javascript では逆の方法を期待するのが妥当だと思います)。

于 2012-09-06T01:25:32.457 に答える
0

書かれている d2h() は正常に動作するはずです。

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

どのようにテストしましたか?

また、16 進数の「28」は 10 進数の 40 であるため、d2h(28) の期待される出力は 40 です。

于 2012-09-06T01:27:41.977 に答える