这两个16进制转为2进制的函数都试过了,转不出来,不知道哪里出问题了//这个是最开始使用的函数
function hex2bin($data) {
    if(''==$data)return '';
    $len = strlen($data);
    for($i=0;$i<$len;$i+=2) {
        $return .= pack("C",hexdec(substr($data,$i,2)));
    }
    return $return;
}
//这个是第二个
function hex2bin($data) {
    if(''==$data)return '';
    $len = strlen($data = strtoupper($data));
    for($i=0,$return=''; $i<len; $i++) {
        switch($data{$i}) {
            case '0': $return .= '0000';  break;
            case '1': $return .= '0001';  break;
            case '2': $return .= '0010';  break;
            case '3': $return .= '0011';  break;
            case '4': $return .= '0100';  break;
            case '5': $return .= '0101';  break;
            case '6': $return .= '0110';  break;
            case '7': $return .= '0111';  break;
            case '8': $return .= '1000';  break;
            case '9': $return .= '1001';  break;
            case 'A': $return .= '1010';  break;
            case 'B': $return .= '1011';  break;
            case 'C': $return .= '1100';  break;
            case 'D': $return .= '1101';  break;
            case 'E': $return .= '1110';  break;
            case 'F': $return .= '1111';  break;
        }
    }
    return $return;
}
//这个是最后一个
function hex2bin($data) {
    return decbin(hexdec($data));
}

解决方案 »

  1.   

    1、因为是二进制码,可能会有些不是字符,也就是加密后的二进制码不是字符的二进制,不能表示字符,就会有乱码(有的像那些可执行文件用记事本打开的效果);
    2、十六进制-〉十进制-〉二进制。
    3、PHP手册有实例。
      

  2.   

    就最开始使用的函数就行啦,函数调用错了,估计想火车票的问题想疯了,这么粗心大意function hex2bin($data) {
        if(''==$data)return '';
        $len = strlen($data);
        for($i=0;$i<$len;$i+=2) {
            $return .= pack("C",hexdec(substr($data,$i,2)));
        }
        return $return;
    }