<?php
/**
*
* ASCII 转 十六进制 以及 十六进制 转 ASCII
* 非盈利组织或个人请放心转载,商业用途请征得作者同意
*
*/
//ASCII 转 十六进制
function asc2hex($str) {
return '\x'.substr(chunk_split(bin2hex($str), 2, '\x'),0,-2);
}
//十六进制 转 ASCII
function hex2asc($str) {
$str = join('',explode('\x',$str));
$len = strlen($str);
for ($i=0;$i<$len;$i+=2) $data.=chr(hexdec(substr($str,$i,2)));
return $data;
}
$asc = "哈哈";
$hex = asc2hex($asc);
$asc = hex2asc($hex);
echo "hex : ".$hex;
echo "<br>
";
echo "asc : ".$asc;
?>保存采用utf8保存,问题1不明白 哈哈 是utf8编码??为什么函数可以说是ascii转16进制。 结果是\xe5\x93\x88\xe5\x93\x88我查过哈哈的ascii码的16进制表现形式是 54c8 54c8 ,明显不一样搞不懂

解决方案 »

  1.   

    还有ascii码本来就是16进制数,谈不上转换吧。莫非函数有误,,也不知谁写的
      

  2.   

    http://www.oschina.net/code/snippet_5189_2836
      

  3.   

    这里用"ascii"显然不合适,"转16进制"这么说也不合适,
    函数的作用其实是: 把字符串的编码用16进制的形式表示出来所以你的疑问都有道理.函数头上写"非盈利组织或个人请放心转载,商业用途请征得作者同意"也很搞笑,
    因为这样简单的代码没有独创性, 别人不需要看也能写出一样的代码,
    所以也当然不需要"征得作者同意"