【PHP8.x】bin2hex関数の使い方
bin2hex関数の使い方について、初心者にもわかりやすく解説します。
基本的な使い方
『bin2hex関数は、引数として受け取ったバイナリデータを、それと等価な16進数表現の文字列に変換する処理を実行する関数です。この関数は、コンピュータが内部で扱う0と1の羅列であるバイナリデータを、人間が読みやすいテキスト形式に変換する目的で使用されます。具体的には、入力された文字列の各バイト(8ビット)を、2文字からなる16進数の文字(0から9およびaからf)に変換します。例えば、ASCII文字の "a" は、16進数では 61 となるため、bin2hex("a") は文字列 "61" を返します。この変換は、バイナリデータをそのままでは扱いにくいデータベースのカラムに保存する場合や、ネットワークを通じて安全にデータを送信する際、あるいはデバッグ目的でデータの内容を視覚的に確認したい場合などに非常に役立ちます。なお、この関数によって変換された16進数文字列は、対となる hex2bin 関数を使用することで、元のバイナリデータに復元することが可能です。
構文(syntax)
1<?php 2 3// string bin2hex(string $string) 4 5// 変換する文字列を準備します。 6$binary_string = "PHP"; 7 8// 文字列を16進数表現に変換します。 9$hex_string = bin2hex($binary_string); 10 11// 変換後の16進数文字列 "504850" を出力します。 12echo $hex_string; 13 14?>
引数(parameters)
string $string
- string $string: 16進数文字列に変換したい文字列
戻り値(return)
string
バイナリデータを16進数文字列に変換した結果を返します。
サンプルコード
PHP bin2hexとhex2binでバイナリ変換する
1<?php 2 3/** 4 * バイナリデータを16進数文字列に変換し、必要に応じて元に戻すサンプル 5 */ 6 7// 元のバイナリデータ 8$binaryData = "Hello, world!"; 9 10// バイナリデータを16進数文字列に変換 11$hexString = bin2hex($binaryData); 12echo "16進数文字列: " . $hexString . PHP_EOL; 13 14// 16進数文字列をバイナリデータに戻す (逆変換) 15$originalBinaryData = hex2bin($hexString); 16echo "元のバイナリデータ: " . $originalBinaryData . PHP_EOL; 17 18?>
PHPのbin2hex関数は、バイナリデータを16進数の文字列に変換するために使用します。引数には、変換したいバイナリデータ(文字列) $string を指定します。この関数は、入力されたバイナリデータの各バイトを、対応する16進数表現の2文字に変換し、その結果を文字列として返します。
サンプルコードでは、まず $binaryData という変数に "Hello, world!" という文字列を格納しています。これが変換対象のバイナリデータとなります。bin2hex($binaryData) を実行することで、このバイナリデータが16進数文字列に変換され、$hexString 変数に格納されます。echo 命令で、変換された16進数文字列が出力されます。
さらに、このサンプルでは、16進数文字列を元のバイナリデータに戻す方法も示しています。hex2bin($hexString) 関数を使用することで、bin2hex 関数で変換された16進数文字列を元のバイナリデータに逆変換できます。逆変換されたデータは $originalBinaryData 変数に格納され、echo 命令で出力されます。このように、bin2hex と hex2bin を組み合わせることで、バイナリデータと16進数文字列の間で相互変換を行うことができます。hex2bin関数はbin2hex関数の逆の処理を行います。
bin2hex()関数は、バイナリデータを16進数の文字列に変換します。変換後の文字列は元のデータの2倍の長さになる点に注意が必要です。hex2bin()関数を使うことで、16進数の文字列を元のバイナリデータに戻すことができます。ただし、hex2bin()関数はPHP 5.4.0以降で使用可能です。古いバージョンのPHPを利用している場合は、代替手段を検討する必要があります。また、bin2hex()は文字列を16進数にエンコードするのみで暗号化は行いません。セキュリティ要件がある場合は、適切な暗号化関数を使用してください。
bin2hexでエンコード/デコードする
1<?php 2 3/** 4 * bin2hex関数でエンコードされた値を元の文字列に戻すサンプルコード。 5 */ 6 7// 元の文字列 8$originalString = "Hello, world!"; 9 10// bin2hexでエンコード 11$hexEncodedString = bin2hex($originalString); 12 13echo "エンコードされた文字列: " . $hexEncodedString . PHP_EOL; 14 15// hex2binでデコード(PHP 5.4.0以降で使用可能) 16$decodedString = hex2bin($hexEncodedString); 17 18echo "デコードされた文字列: " . $decodedString . PHP_EOL; 19 20// bin2hex と hex2bin が逆の処理を行うことを確認 21if ($originalString === $decodedString) { 22 echo "エンコードとデコードは正常に完了しました。" . PHP_EOL; 23} else { 24 echo "エンコードまたはデコードでエラーが発生しました。" . PHP_EOL; 25}
bin2hex関数は、文字列を16進数表現にエンコードするPHPの組み込み関数です。引数にはエンコードしたい文字列 $string を指定します。関数は、エンコードされた16進数の文字列を返します。
このサンプルコードでは、まず$originalString変数に元の文字列 "Hello, world!" を格納します。次に、bin2hex関数を使用して、この文字列を16進数文字列にエンコードし、$hexEncodedString変数に格納します。エンコードされた文字列は画面に出力されます。
そして、hex2bin関数を使って、16進数文字列を元の文字列にデコードします。hex2bin関数はPHP 5.4.0以降で使用可能です。デコードされた文字列は $decodedString 変数に格納され、画面に出力されます。
最後に、元の文字列とデコードされた文字列が一致するかどうかを比較し、エンコードとデコードが正常に完了したかを確認します。一致する場合は「エンコードとデコードは正常に完了しました。」というメッセージが表示され、一致しない場合はエラーが発生した旨のメッセージが表示されます。bin2hex と hex2bin は互いに逆の処理を行う関数であり、データの変換と復元に役立ちます。
bin2hex関数は、文字列を16進数表現に変換します。エンコードされた文字列を元に戻すには、hex2bin関数を使用します。hex2bin関数はPHP 5.4.0以降で使用可能です。古いバージョンのPHPを利用している場合は、代替手段を検討する必要があります。bin2hexとhex2binは互いに逆の処理を行うため、正しく使用すれば元の文字列に戻すことができます。エンコード・デコード処理後は、元の文字列とデコード後の文字列を比較し、一致することを確認すると、処理の正確性を検証できます。