downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

html_entity_decode> <hebrevc
[edit] Last updated: Fri, 17 May 2013

view this page in

hex2bin

(PHP >= 5.4.0)

hex2bin16進エンコードされたバイナリ文字列をデコードする

説明

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"

参考

  • bin2hex() - 2進表現のデータを16進表現に変換する
  • unpack() - バイナリ文字列からデータを切り出す



html_entity_decode> <hebrevc
[edit] Last updated: Fri, 17 May 2013
 
add a note add a note User Contributed Notes hex2bin - [4 notes]
up
4
Anonymous
1 year ago
The function hex2bin does not exist in PHP5.
You can use 'pack' instead :

$binary_string = pack("H*" , $hex_string);
up
1
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;
    }
?>
up
0
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)
up
0
Anonymous
1 year ago
The function pack("H*" , $hex_string); will not work as expected if $hex_string contains an odd number of hexadecimal digits.

For example:

<?php echo ord(pack("H*", 'F')); ?>

will return 240 not 15. Use pack("H*", '0F'); instead.

 
show source | credits | stats | sitemap | contact | advertising | mirror sites