The function hex2bin does not exist in PHP5.
You can use 'pack' instead :
$binary_string = pack("H*" , $hex_string);
hex2bin
(PHP >= 5.4.0)
hex2bin — 16進エンコードされたバイナリ文字列をデコードする
説明
string hex2bin
( string
$data
)16進エンコードされたバイナリ文字列をデコードします。
警告
これは、16進数を2進数に変換する関数ではありません。 2進数への変換には base_convert() 関数を使いましょう。
パラメータ
-
data -
16進表現のデータ。
返り値
指定したデータを2進表現に変換したものを返します。
失敗した場合に FALSE を返します。
エラー / 例外
16進表現の入力文字列長が奇数の場合は E_WARNING
レベルのエラーが発生します。
変更履歴
| バージョン | 説明 |
|---|---|
| 5.4.1 | 入力の文字列長が奇数の場合に警告を発するようになりました。 PHP 5.4.0 ではそんな文字列も黙って受け入れていましたが、 最終バイトは無視されていました。 |
例
例1 hex2bin() の例
<?php
$hex = hex2bin("6578616d706c65206865782064617461");
var_dump($hex);
?>
上の例の出力は、 たとえば以下のようになります。
string(16) "example hex data"
Anonymous ¶
1 year ago
Johnson ¶
4 months ago
For those who have php version prior to 5.4, i have a solution to convert hex to binary. It works for me in an encryption and decryption application.
<?php
function hextobin($hexstr)
{
$n = strlen($hexstr);
$sbin="";
$i=0;
while($i<$n)
{
$a =substr($hexstr,$i,2);
$c = pack("H*",$a);
if ($i==0){$sbin=$c;}
else {$sbin.=$c;}
$i+=2;
}
return $sbin;
}
?>
jarismar dot php at gmail dot com ¶
5 months ago
A way to convert hex strings in the form "0x123ABC" to integer is to use the function base_convert("0x123ABC", 16, 10)
