PHP関数編:10進数、2進数、8進数、16進数の変換関数を詳しく解説

PHP関数編:10進数、2進数、8進数、16進数を相互に変換する関数の説明を詳しく解説します。

主に各進数変換の方法を理解し、実際の開発に応用できるようにします。

10進数(decimal system)変換関数の説明

10進数から2進数へ変換する decbin() 関数

次の例を見てください。

echo decbin(12); // 输出 1100
echo decbin(26); // 输出 11010

decbin(PHP 3, PHP 4, PHP 5)

decbin:10進数を2進数に変換します。

説明:

string decbin(int $number)

指定された number パラメータの2進表現を含む文字列を返します。変換できる最大値は10進数の 4294967295 で、その結果は 32 個の 1 からなる文字列です。

10進数から8進数へ変換する decoct() 関数

echo decoct(15);  // 输出 17
echo decoct(264); // 输出 410

decoct(PHP 3, PHP 4, PHP 5)

decoct:10進数を8進数に変換します。

説明:

string decoct(int $number)

指定された number パラメータの8進表現を含む文字列を返します。変換できる最大値は10進数の 4294967295 で、その結果は 37777777777 です。

10進数から16進数へ変換する dechex() 関数

echo dechex(10); // 输出 a
echo dechex(47); // 输出 2f

dechex(PHP 3, PHP 4, PHP 5)

dechex:10進数を16進数に変換します。

説明:

string dechex(int $number)

指定された number パラメータの16進表現を含む文字列を返します。変換できる最大値は10進数の 4294967295 で、その結果は ffffffff です。

2進数(binary system)変換関数の説明

2進数から10進数へ変換する bindec() 関数

echo bindec('110011');    // 输出 51
echo bindec('000110011'); // 输出 51
echo bindec('111');       // 输出 7

bindec(PHP 3, PHP 4, PHP 5)

bindec:2進数を10進数に変換します。

説明:

number bindec(string $binary_string)

binary_string パラメータが表す2進数の10進数としての等価値を返します。

bindec() は2進数を integer に変換します。変換できる最大値は 31 ビットすべてが 1 の数、つまり10進数の 2147483647 です。PHP 4.1.0 以降、この関数は大きな数値も処理でき、その場合は float 型を返します。

2進数から16進数へ変換する bin2hex() 関数

$binary = '11111001';
$hex = dechex(bindec($binary));
echo $hex; // 输出 f9

bin2hex(PHP 3 >= 3.0.9, PHP 4, PHP 5)

bin2hex:バイナリデータを16進表現に変換します。

説明:

string bin2hex(string $str)

パラメータ str の16進表現である ASCII 文字列を返します。変換はバイト単位で行われ、上位4ビットが先になります。

8進数(octal system)変換関数の説明

8進数から10進数へ変換する octdec() 関数

echo octdec('77');       // 输出 63
echo octdec(decoct(45)); // 输出 45

octdec(PHP 3, PHP 4, PHP 5)

octdec:8進数を10進数に変換します。

説明:

number octdec(string $octal_string)

octal_string パラメータが表す8進数の10進数としての等価値を返します。変換できる最大値は 17777777777、つまり10進数の 2147483647 です。PHP 4.1.0 以降、この関数は大きな数値も処理でき、その場合は float 型を返します。

16進数(hexadecimal)変換関数の説明

16進数から10進数へ変換する hexdec() 関数

var_dump(hexdec('See'));
var_dump(hexdec('ee'));
// both print "int(238)"
var_dump(hexdec('that')); // print "int(10)"
var_dump(hexdec('a0'));   // print "int(160)"

hexdec(PHP 3, PHP 4, PHP 5)

hexdec:16進数を10進数に変換します。

説明:

number hexdec(string $hex_string)

hex_string パラメータが表す16進数と等価な10進数を返します。hexdec() は16進文字列を10進数に変換します。変換できる最大値は 7fffffff、つまり10進数の 2147483647 です。PHP 4.1.0 以降、この関数は大きな数値も処理でき、その場合は float 型を返します。

hexdec() は、遭遇したすべての非16進文字を 0 に置き換えます。そのため、左側のゼロはすべて無視されますが、右側のゼロは値に含まれます。

任意の基数変換を行う base_convert() 関数

$hexadecimal = 'A37334';
echo base_convert($hexadecimal, 16, 2); // 输出 101000110111001100110100

base_convert(PHP 3 >= 3.0.6, PHP 4, PHP 5)

base_convert:任意の基数間で数値を変換します。

説明:

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

numbertobase 進数で表した文字列を返します。number 自体の基数は frombase で指定します。frombasetobase はどちらも 2 から 36 まで(2 と 36 を含む)の範囲でなければなりません。10進数を超える数値は a-z の文字で表され、たとえば a は 10、b は 11、z は 35 を表します。

Leave a Reply