PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのbase_convert()関数とは?使い方と実行例をわかりやすく解説

PHPには、数値の進法(基数)を自由に変換できる便利な関数が用意されています。それがbase_convert()関数です。本記事では、この関数の基本構文からパラメータの詳細、実際のコード例までをわかりやすく解説します。

base_convert()関数の定義と用途

base_convert()関数は、ある基数で表された数値を別の基数に変換するための汎用的なユーティリティです。変換対象となる基数は、2進法・8進法・10進法・16進法といった代表的な進法に限定されず、2から36までの任意の整数を指定できます。

第1引数には、英数字を含む文字列を渡します。基数が9より大きい場合、10以上の桁はアルファベット a〜z を使って表現されます。具体的には、10が「a」、11が「b」となり、35が「z」に対応します。

たとえば、base_convert('1001', 2, 10)は「1001」を2進数から10進数へ変換し、結果として「9」を返します。

構文

base_convert ( string $number , int $frombase , int $tobase ) : string

パラメータ

番号パラメータと説明
1number
変換対象の数値を格納した文字列
2frombase
numberが現在表している基数(2〜36)
3tobase
変換先の基数(2〜36)

戻り値

base_convert()関数は、変換後のnumberを表す文字列(string型)を返します。

対応するPHPバージョン

この関数は、PHP 4.x、PHP 5.x、PHP 7.x のすべてのバージョンで利用可能です。なお、PHP 7.4以降では非推奨となっているため、新規開発では base_convert() の代わりにビルトインの進法変換機能や任意精度演算の利用も検討するとよいでしょう。

使用例1:2進数から10進数への変換

次の例では、「1001」を2進数から10進数に変換します。

<?php
    $arg='1001';
    $frombase = 2;
    $tobase = 10;
    $val=base_convert($arg,$frombase, $tobase);
    echo "base_convert(" . $arg . " from base " . $frombase ."to " . $tobase . ") = " . $val;
?>

出力結果

base_convert(1001 from base 2 to 10) = 9

使用例2:5進数から16進数への変換

次の例では、「12340」を5進数として扱い、16進数に変換します。

<?php
    $arg='12340';
    $frombase = 5;
    $tobase = 16;
    $val=base_convert($arg,$frombase, $tobase);
    echo "base_convert(" . $arg . " from base " . $frombase ."to " . $tobase . ") = " . $val;
?>

出力結果

base_convert(12340 from base 5 to 16) = 3ca

使用例3:無効な文字は無視される

アルファベット(a-z)および数字(0-9)以外の文字は無視されます。次の例では、数値文字列内の「+」が無視されて処理されます。

<?php
    $arg='12+340';
    $frombase = 10;
    $tobase = 16;
    $val=base_convert($arg,$frombase, $tobase);
    echo "base_convert(" . $arg . " from base " . $frombase ."to " . $tobase . ") = " . $val;
?>

出力結果

base_convert(12+340 from base 10 to 16) = 3034

使用例4:25進数の「CANDLE」を16進数に変換

「CANDLE」は25を基数とする数値として解釈できます。次の例では、これを16進数に変換します。

<?php
    $arg='CANDLE';
    $frombase = 25;
    $tobase = 16;
    $val=base_convert($arg,$frombase, $tobase);
    echo "base_convert(" . $arg . " from base " . $frombase . " to " . $tobase . ") = " . $val;
?>

出力結果

base_convert(CANDLE from base 25 to 16) = 73d5c1d

まとめ

base_convert()関数を使うことで、2〜36進法のあらゆる組み合わせで数値の基数変換を簡単に行えます。英数字以外の文字は自動的に無視される点にも注意しながら活用しましょう。大規模な数値を扱う場合は精度面での考慮も必要なため、用途に応じて適切な関数を選択することが重要です。

  1. PHPのgregoriantojd()関数とは?構文・パラメータ・使用例を解説

    PHPのgregoriantojd()関数は、グレゴリオ暦(現在広く使われている暦)の日付をユリウス通日(Julian Day Count)に変換し、その結果としてユリウス日番号を返す関数です。ユリウス通日は、天文学や歴史上の日付計算などで利用される連続した日数表現であり、異なる暦同士の日付比較や計算を簡単に行えるのが特徴です。 注意 − グレゴリオ暦として有効な範囲は、紀元前4714年11月25日から紀元9999年12月31日以降までとなっています。この範囲外の日付を指定すると、正しい結果が得られない場合があります。 構文 GregorianToJD(month, date, year)

  2. PHPのfscanf()関数とは?使い方とフォーマット指定子を徹底解説

    PHPのfscanf()関数は、オープン中のファイルから入力を読み込み、指定されたフォーマットに従って解析するための関数です。パラメータを2つだけ渡して呼び出した場合、解析結果の値が配列として返されます。基本構文fscanf(file_pointer, format, mixed)パラメータの詳細file_pointer − fopen()関数を使って作成されたファイルシステムポインタリソースを指定します。format − 読み込むデータの形式(フォーマット)を指定します。使用できる主なフォーマット指定子は以下の通りです。%% − パーセント記号(%)そのものを返す%b − 2進数として読み込