中文与16进制互相转换

手册提供2进制,8进制,10进制,16进制字符串的互相转换函数
decbin(),decoct(),dechex()  base_convert()等
我们只需将中文转换成ascii码,再利用进制转换函数就可以了


要注意字符串编码不同转换的结果也不一样
比如GBK编码一个中文占2个字节而utf-8编码一个中文占3个字节或4个字节
中文与16进制互相转换的示例测试可用,暂时没发现bug。-_-u
以下代码均在utf-8文本编辑器里进行的

 

转换代码:

//字符串转换成16进制 function str2hex($str){ $hex = ''; for($i=0,$length=mb_strlen($str); $i<$length; $i++){ $hex .= dechex(ord($str{$i})); } return $hex; } //16进制转换成字符串 function hex2str($hex){ $str = ''; $arr = str_split($hex, 2); foreach($arr as $bit){ $str .= chr(hexdec($bit)); } return $str; }

 

测试代码:

function test(){ //utf8字符测试 $str = '中文'; echo mb_strlen($str); echo '
'; $hex = str2hex($str); echo $hex; echo '
'; $dec = hex2str($hex); echo $dec; echo "
"; echo "


"; //gbk测试 $gbkstr = mb_convert_encoding($str,'GBK','UTF-8'); echo mb_strlen($gbkstr); echo '
'; $hex = str2hex($gbkstr); echo $hex; echo '
'; $dec = mb_convert_encoding(hex2str($hex), 'UTF-8', 'GBK'); echo $dec; echo "
"; }

 

输出结果:

6
e4b8ade69687
中文
-----------------
4
d6d0cec4
中文

 

 

你可能感兴趣的:(php)