bin2hex

bin2hex関数:バイナリデータを16進数の表現に変換する

使い方

$hexstring = bin2hex( $binary );

この関数は上位4ビットで1文字の16進数表現、下位4ビットで1文字の16進数表現と言う風に1バイトずつ丁寧に16進数表現に変換してくれる便利な関数です。
まぁ、便利かどうかは使う人によっていろいろあるかと思いますが。

たまにはサンプルコードを。
(ちなみにこのコードはUTF-8で書かれています。)

<?php
$str = 'ABC123abc#_-';
echo bin2hex($str)."\n";

$str = '私はリンゴが食べたい';
echo bin2hex($str)."\n";

こんなコードを実行するとこのような結果が返ります。
※わかりづらくてすみません。

414243313233616263235f2d
e7a781e381afe383aae383b3e382b4e3818ce9a39fe381b9e3819fe38184

このコードはUTF-8で書かれていますので、
当然ながら文字列もUTF-8でエンコーディングされていますから、
このようにUTF-8のバイナリデータとして16進数表現に変換されました。
上の方の文字列はASCIIの文字のみなので1文字が1バイトで表現されています。
下の方の文字列はUTF-8のマルチバイト文字列ばかりなので、1文字あたり大体3バイトくらいで表現されています。
(かなりおおざっぱに言えば、上位バイトが「c」か「d」か「e」になっているバイトがUTF-8のマルチバイト文字の1文字の始まりです)

使いどころ

入力された文字列とかファイルのデータを16進数表現でダンプしたい。なんてことがたまにありませんか?
そういう時にこそこのbin2hex関数を使ってください。楽です。圧倒的に楽です。

ちなみに16進数表現されたデータをもとのバイナリデータに戻すときにはpack関数を使うとよいですよ。
いつかpack関数も紹介します。

公式サイト

http://jp1.php.net/manual/ja/function.bin2hex.php