> 백엔드 개발 > PHP 튜토리얼 > hex2bin in PHP

hex2bin in PHP

WBOY
풀어 주다: 2016-06-23 14:36:32
원래의
979명이 탐색했습니다.

需要把格式为 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 );
}

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿