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 はコードで使われている形で値を表示できる関数)
1 2 3 4 5 6 7 8 9 10 11 |
$bin = decbin( 100 ); var_export( $bin ); /// => '1100100' $bin = decbin( 500 ); var_export( $bin ); /// => '111110100' $bin = decbin( 2000 ); var_export( $bin ); /// => '11111010000' |
上コードみたいに '1100100' とか '111110100' みたいな値が返ってきます。
decoct : 10進数から8進数へ変換
decoct関数は10進数⇒8進数に変換するための関数。decbin関数と同じく10進数の数値または変数を渡せば返り値が8進数に変換されて返ってきます。
ただしこの場合も返り値は文字列で返ってくること( 例 : '777' )に要注意(ちなみにPHPだと 0123 みたいに 0 をつけることで直に表記することも可能)
例えば次がdecbin関数を使って10進数を8進数に変換・表示しているコード例
1 2 3 4 5 6 7 8 9 10 11 |
$oct = decoct( 100 ); var_export( $oct ); /// => '144' $oct = decoct( 500 ); var_export( $oct ); /// => '764' $oct = decoct( 2000 ); var_export( $oct ); /// => '3720' |
'144' とか '764' とか '3720' とか・・・10進数と少し紛らわしいですが、こちらも8進数に変換された文字列が返ってきています。あと8進数表記と違って先頭に 0 はつきません。
8進数自体は2進数とか16進数と比べるとあまり使うことがないですが、知っておくとどこかで役に立つかもですね。
dechex : 10進数から16進数に変換
最後の紹介するdechex関数は10進数⇒16進数の変換を行う関数。これまでの関数同様に10進数の値または変数を渡すことで変換された値を返してくれます。
ただしこの関数も返される値は文字列であること( 例 : 'FB84' )に要注意(ちなみにPHPだと 0xFFFF みたいに 0x をつけることで直に数値として表記することも可能)
例えば次が10進数⇒16進数の変換・表示をしているコード例
1 2 3 4 5 6 7 8 9 10 11 |
$hex = dechex( 100 ); var_export( $hex ); /// => '64' $hex = dechex( 500 ); var_export( $hex ); /// => '1f4' $hex = dechex( 2000 ); var_export( $hex ); /// => '7d0' |
返り値は '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進数に戻したくなった場合はこれらの関数も便利ですね。