JavaScriptで10進数を2・8・16進数に変換する方法まとめ

JavaScriptでは10進数を他の基数(2進数、8進数、16進数、etc・・)に変換することができます。

その方法とは Number.toString  メソッドに基数を渡して呼び出しすること

 

例えば10進数 dec  をn新数で表された文字列 xxx  に変換したいなら

とすれば xxx  にn進数変換された文字列が取得できるというやり方です。ポイントはただ toString  を呼び出すのではなく、 2  とか 16  とかの基数を渡すことですね。

 

ここではこれを使って10進数を2・8・16進数に変換するやり方やコード例、注意点などについてまとめてみました。

2進数を10進数に変換する

2進数 ⇒ 10進数 の場合は toString(2)  を実行すればOK

例えば次が10進数を2進数に変換・表示しているコード例です。

返される値は 10000000  とか 10100000  とかの2進数で表記された文字列

気を付けるべきことは toString  はNumber型のオブジェクトのメソッドなので直接数値に対しては呼び出せないことです。間違っても 128.toString(2)  とか書かないようにしましょう。

 

あとマイナス値を2進数に直した場合、先頭のマイナス記号は残ることにも要注意

例えば次がマイナス付き10進数を2進数文字列に直しているコード例

見ての通り -127  を変換したら -1111111  になってしまっています・・・

もちろんビット演算などを使えばマイナスを含まない形にも直せますが、処理が複雑です。 toString(2)  はなるべくマイナスの値に対しては使わない方がいいですね。

8進数を10進数に変換する

10進数 ⇒ 8進数 の場合は toString(8)  を実行

例えば次が10進数から8進数への変換・表示を行っているコード例

ちょっと分かりにくいですが、 77  とか 777  とか 7777  は8進数変換された文字列(つまり 0 ~ 7 のみを使って表された文字列)です。

2進数の場合と同じくマイナス(または少数)を渡してしまうと、マイナス記号・小数点はそのまま残ってしまうので整の正数だけに使う方が安全かも

10進数を16進数文字列に変換

10進数 ⇒ 16進数 に変換する場合は toString(16)  を実行

例えば次が数値を16進数に変換して表示しているコード例

上コードのコメントに書いた 1FF  とか 3FF  とか 7FF  が実際に変換された16進数文字列。ちなみに見やすいように toUpperCase  で大文字変換もしてます。

ただし今までと同じくマイナス値や小数点を渡してしまった場合、マイナス記号( -  )や小数点( .  )はそのまま残ってしまうことに注意。

そもそもコード中で16進数を使ってマイナスとか小数を表すことはない(というか表せない)ので正の整数以外には使わない方がいいですね。

ここまでのまとめ

ここまでで紹介した変換方法をまとめると次の通り

  • 10進数から2進数への変換
    数値から toString(2)  を実行。返り値は 10000000  、  10100000  のような2進数文字列
  • 10進数から8進数への変換
    数値から toString(8)  を実行。 返り値は 77  とか 777  のような8進数文字
  • 10進数から16進数への変換
    数値から toString(16)  を実行。返り値は 1FF  とか 3FF  みたいな16進数文字列

「10進数を他の基数に変換したい」、という場面は少ないものの toString  を使えばできることだけ知っておけばどこかで役立ちそうです。

以上JavaScriptで10進数を2・8・16進数に変換する方法についてでした。

補足 : 2・8・16進数から10進数への変換も可

toStringメソッドとは逆にある方法を使うと

  • 2進数  ⇒ 10進数
  • 8進数  ⇒ 10進数
  • 16進数 ⇒ 10進数

のように変換することも可能です。

 

そのやり方とは次でまとめたようにparseIntメソッドを使うこと

上記事では使い方に加えてコード例についてもいくつか紹介したので、n進数 ⇒ 10進数 に変換が必要な場合は是非こちらもご覧ください。