先日、仕事で少し詰まった箇所があったので、皆さんにもご紹介。
それは、JavaScriptでの16進数から2進数への0埋め変換ですね。
16進数→2進数に直接変換するようなメソッドが現在、JavaScritpには無いようです。
そのため、16進数→10進数→2進数という変換を行いますね。
これで16進数を2進数に変えることはできるのですが、0埋めされないので一工夫が必要になります。
16進数→10進数の変換
まずは、16進数を10進数に変換しましょう。
そのためには、parseInt()を使用します。
// 16進数
const hex = 'F';
// 10進数に変換
const decimal = parseInt(hex, 16);
console.log(decimal);
// 実行結果
15
第一引数に変換したい値、第二引数にその進数を入れると、10進数に変換が可能です。
2進数や8進数でも同様に変換することが可能です。
10進数→2進数の変換
次は10進数を2進数に変換しましょう。
この時はtoString()を使います。
toStringの引数に進数の値を入れることで、変換が可能です。
2進数以外にも、8進数や16進数でも同様に変換できますね。
16進数→2進数の変換
ここまでの手順を組み合わせると、16進数→2進数への変換が可能ですね。
ただし、これだけだと少し不十分な場合があります。
それは、冒頭でも言ったように、2進数を0埋めで表示したい時ですね。
2進数に変換しているのはあくまでも10進数の値なので、先頭の0は表示されません。
16進数→2進数の変換(0埋め)
さて、最後に0埋めの方法について確認しておきましょう。
これにはslice()を使います。
sliceは文字列の中の一部を抽出した時に使えるメソッドですね。
今回は16進数が2桁なので、「00000000」と10進数を2進数に変換した文字列を足しています。
そして、後ろから8文字を切り出せば、0埋めされた2進数を取得できるというわけですね。
16進数の桁数が事前に分からない場合は、以下のように変換処理をメソッド化するのも良いでしょう。
(もっと良い書き方がありそう・・・)
まとめ
さて、今回はJavaScriptで16進数→2進数に0埋め変換する方法についてお話ししてきました。
0埋めしたい時は基本的にはslice()を使えば解決できそうですね。