hex2bin in PHP

WBOY
WBOYOriginal
2016-06-23 14:36:32991browse

需要把格式为 0xd4d9b2e2cad4d2bbcfc2 的字符串转换为文本,但是PHP 中只找到bin2hex方法 --  Convert binary data into hexadecimal representation. 以下是hex2bin 的实现 :) 

     /**/ /**
    * 从16进制字符串中的两个字符返回一个byte
    * @param $str - 包含字符的字符串
    * @param $start - 第一个字符的位置
    * @return string 分析后的byte
    * @throw Exception
    */  
     private   static  function _FromHexPair($str,$start  =   0 )
     {
        $c1 = $str[$start];        //取第一个字符
        $c2 = $str[$start + 1];    //第二个
        
        $c1 = ord($c1);
        $c2 = ord($c2);
        
        //字符对应的值
        $i1;    
        $i2;
        
        //$c1=>$i1
        if($c1>=ord('0')&& $c1            $i1 =$c1-ord('0');
        else if($c1>=ord('A')&&$c1            $i1 =$c1-ord('A')+10;
        else if($c1>=ord('a')&&$c1            $i1 =$c1-ord('a')+10;
        else throw new exception("unexpected char 1:" . $c1 . " @ " . $start);
        
        //$c2=>$i2
        if($c2>=ord('0')&&$c2            $i2 =$c2-ord('0');
        else if($c2>=ord('A')&&$c2            $i2 =$c2-ord('A')+10;
        else if($c2>=ord('a')&&$c2            $i2 =$c2-ord('a')+10;
        else throw new exception("unexpected char 2:" . $c2 . " @ " . ($start+1));
        
        return chr(($i1    }
    
     /**/ /**
    * 把十六进制字符串转换成文本字符串
    * @param $str - 要转换的字符串,不能为null.
    * @return string
    * @throw Exception
    */   
     public   static  function hex2bin($str)
     {
        //判断长度
        if((strlen($str)%2) != 0 )
            throw new exception("str.Length % 2 != 0");
        //计算byte[]的长度
        $len = strlen($str)/2;
        $str_result = '';
        //循环复制
        for($i=0;$i        {
            $str_result .= self::_FromHexPair($str,$i*2);
        }
        return $str_result;
    }


#-------- 2007-05-28 update --------#
原来很简单的一个问题 被自己搞的很复杂 - -;;

function  hex2bin( $hex_string ) {
     return   pack ( ' H* ' ,   $hex_string );
}

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:php报错Next article:isset function of PHP