<?php
$a = '张三';
echo bin2hex($a);
?>你说话倒是理直气壮……

解决方案 »

  1.   

    呵呵,见笑了,上面的你那个代码结果是:e5bca0e4b889 但是和我上面D5C5C8FD不一样啊,我要的效果得要一样啊,不然出错,我是菜鸟,请高手关顾
      

  2.   

    1楼的应该可以吧。你自己也可以编写相关函数,给出一个参考(google到的):
    <?phpfunction SingleDecToHex($dec)
    {
    $tmp="";
    $dec=$dec%16;
    if($dec<10)
    return $tmp.$dec; $arr=array("a","b","c","d","e","f"); return $tmp.$arr[$dec-10];
    }function SingleHexToDec($hex)
    {
    $v=Ord($hex);
    if(47<$v&&$v<58)
    return $v-48; if(96<$v&&$v<103)
    return $v-87;
    }function SetToHexString($str)
    {
    if(!$str)return false;
    $tmp="";
    for($i=0;$i<strlen($str);$i++)
    {
    $ord=Ord($str[$i]);
    $tmp.=SingleDecToHex(($ord-$ord%16)/16);
    $tmp.=SingleDecToHex($ord%16);
    }
    return $tmp;
    }function UnsetFromHexString($str)
    {
    if(!$str)return false;
    $tmp="";
    for($i=0;$i<strlen($str);$i+=2)
    {
    $tmp.=chr(SingleHexToDec(substr($str,$i,1))*16+SingleHexToDec(substr($str,$i+1,1)));
    }
    return $tmp;
    }echo SetToHexString("张三")
    ?>
      

  3.   

    但是你这个结果是e5bca0e4b889,和上面的那个结果不一样啊,我要的效果是:编码前:张三    编码后:D5C5C8FD 
      

  4.   

    我要的结果是:编码前:张三    编码后:D5C5C8FD 
    但是你们的结果都是:e5bca0e4b889 啊,我不知道怎么编码字符串的ASCII码以16进制编码形成的字符串才能是:D5C5C8FD ?
      

  5.   

    我的电脑都可以输出正确结果。并且在网上的多个虚拟主机上进行过测试,结果也是正确的。包括php4,php5,linux,windows系统。或许是你自己电脑的环境配置吧。
      

  6.   

    <?php
    $str = '张三';
    $str = iconv('GBK','UTF-8',$str); // utf-8:E5BCA0E4B889   gbk:D5C5C8FD
    $result = bin2hex($str); 
    echo strtoupper($result);
    ?>