PHPで10進数を2進数・16進数などに変換する関数まとめ

PHPに限らず10進数を他の基数(2・8・16進数など)に変換する方法は色々あります。例えば自分で処理を考えたり、専用のライブラリを使ったり、・・・

ですがPHPの場合はそんな小難しいことをしなくても

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

に変換するための関数があらかじめ用意されています。

ここではこの3つの関数の使い方とかコード例についてまとめてみました。

decbin : 10進数から2進数へ変換

decbin関数は10進数⇒2進数の変換をするための関数。10進数の値(数値)または変数を渡せば2進数に変換された値が返ってきます。

ただし返り値は2進数で表された文字列で返されるので注意( 例 : '1001100'  )

 

例えば次が10進数から2進数 に変換して結果を表示しているコード例(ちなみに var_export  はコードで使われている形で値を表示できる関数)

上コードみたいに '1100100'  とか '111110100'  みたいな値が返ってきます。

decoct : 10進数から8進数へ変換

decoct関数は10進数⇒8進数に変換するための関数。decbin関数と同じく10進数の数値または変数を渡せば返り値が8進数に変換されて返ってきます。

ただしこの場合も返り値は文字列で返ってくること( 例 : '777'  )に要注意(ちなみにPHPだと 0123  みたいに    0  をつけることで直に表記することも可能)

 

例えば次がdecbin関数を使って10進数を8進数に変換・表示しているコード例

'144'  とか '764'  とか '3720'  とか・・・10進数と少し紛らわしいですが、こちらも8進数に変換された文字列が返ってきています。あと8進数表記と違って先頭に 0  はつきません。

8進数自体は2進数とか16進数と比べるとあまり使うことがないですが、知っておくとどこかで役に立つかもですね。

dechex : 10進数から16進数に変換

最後の紹介するdechex関数は10進数⇒16進数の変換を行う関数。これまでの関数同様に10進数の値または変数を渡すことで変換された値を返してくれます。

ただしこの関数も返される値は文字列であること( 例 : 'FB84'  )に要注意(ちなみにPHPだと 0xFFFF  みたいに 0x  をつけることで直に数値として表記することも可能)

 

例えば次が10進数⇒16進数の変換・表示をしているコード例

返り値は '64'  とか '1f4'  とか '7d0'  のような形式。 16進数表記と違って先頭に 0x  が付かないことにも注意ですね。

ここまでのまとめ

ここまでの10進数を変換する関数をまとめると次の通り

  • decbin関数
    10進数から2進数に変換する関数で、返り値は '1100100'  のように2進数化された文字列
  • decoct関数
    10進数から8進数に変換する関数で、返り値は '144'  みたいな8進数化された文字列。ただし8進数表記みたく先頭に 0  が付かないことに注意
  • dechex関数
    10進数から16進数に変換する関数で、返り値は '1f4'  のような16進数化された文字列。ただし16進数表記のように先頭に 0x  が付かないことに注意

以上PHPで10進数から2進数・8進数・16進数に変換する関数についてでした。

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

PHPにはここまで紹介した関数とは逆に

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

という風に10進数へと変換する関数もあります。

 

各関数の使い方やコード例は次記事で書いた通り

10進数に戻したくなった場合はこれらの関数も便利ですね。