php 编码成16进制问题 <?php$a = '张三';echo bin2hex($a);?>你说话倒是理直气壮…… 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 呵呵,见笑了,上面的你那个代码结果是:e5bca0e4b889 但是和我上面D5C5C8FD不一样啊,我要的效果得要一样啊,不然出错,我是菜鸟,请高手关顾 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("张三")?> 但是你这个结果是e5bca0e4b889,和上面的那个结果不一样啊,我要的效果是:编码前:张三 编码后:D5C5C8FD 我要的结果是:编码前:张三 编码后:D5C5C8FD 但是你们的结果都是:e5bca0e4b889 啊,我不知道怎么编码字符串的ASCII码以16进制编码形成的字符串才能是:D5C5C8FD ? 我的电脑都可以输出正确结果。并且在网上的多个虚拟主机上进行过测试,结果也是正确的。包括php4,php5,linux,windows系统。或许是你自己电脑的环境配置吧。 <?php$str = '张三';$str = iconv('GBK','UTF-8',$str); // utf-8:E5BCA0E4B889 gbk:D5C5C8FD$result = bin2hex($str); echo strtoupper($result);?> php post 特殊字符串 网站优化问题 求熟悉Pear的高手(若能解决,高分相送) 求一个解析<tr><td>的正则表达式 讨论一下销售的统计 装了easyphp但.php文件无法执行 能不能用mail()函数以附件的形式发送邮件? mysql数据库的连接问题(在线等待) 关于刷新问题! PHP 怎么调用JS啊 php-[function.fopen]: failed to open stream: Permission denied都改了为什么还出这样的问题 作内容分页生成html遇到的问题!急啊
<?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("张三")
?>
但是你们的结果都是:e5bca0e4b889 啊,我不知道怎么编码字符串的ASCII码以16进制编码形成的字符串才能是:D5C5C8FD ?
$str = '张三';
$str = iconv('GBK','UTF-8',$str); // utf-8:E5BCA0E4B889 gbk:D5C5C8FD
$result = bin2hex($str);
echo strtoupper($result);
?>