PHP里,16进制格式字符串,转换成具体值的方法

qq874655551 2011-09-02 07:57:18
目的:将用十六进制保存的中文文件内容输出到屏幕。(十六进制文件打开后是乱码,Ultraedit 打开即是十六进制数)。
本人是在图形模式下输出的。未成功的代码如下,求大侠指教。
为了方便测试,给出下面对应的十六进制值
西游记水浒传三国演义红楼梦:E8 A5 BF E6 B8 B8 E8 AE B0 E6 B0 B4 E6 B5 92 E4
BC A0 E4 B8 89 E5 9B BD E6 BC 94 E4 B9 89 E7 BA
A2 E6 A5 BC E6 A2 A6
<?php
$width = 200;
$height =300;
$img = imagecreatetruecolor($width,$height) or die("不支持GD图像处理");
$line_color = imagecolorallocate($img, 255, 255, 255);
$font_type ="C://WINDOWS//Fonts//SIMKAI.TTF";
$str="E8A5BFE6B8B8E8AEB0E6B0B4E6B592E4BCA0E4B889E59BBDE6BC94E4B989E7BAA2E6A5BCE6A2A6";
$first = 0;
$second = 2;
$third = 4;
//开始循环连接。
do
{
//拼写一个字,循环输出一个值就不必再重复cn_char了。
$str1 = '0x'.substr($str,$first,2);
$str2 = '0x'.substr($str,$second,2);
$str3 = '0x'.substr($str,$third,2);
/*
这里不知道如何将字符串类型的 十六进制数转换成对应的十六进制数值??
*/
//一个字。
$cn_begin = $cn_begin.chr($str1).chr($str2).chr($str3);
$first = $first + 4 ;
$second = $second + 4 ;
$third = $third + 4 ;
}while(strlen($str)%6<1)
imageline($img, 0, 40, 200, 40, $line_color);
imageline($img, 0, 260, 200, 260, $line_color);
//只需要这一个输出即可了。
imagettftext($img, 15, 0, 90, 254, $line_color, $font_type,$cn_begin);
imagepng($img);
imagedestroy($img);
?>
代码中间可能有错误的地方,。
问题解决有加分。
...全文
787 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kogeo 2011-09-03
  • 打赏
  • 举报
回复
学习学习。。
  • 打赏
  • 举报
回复
收藏一下,好问题,好答案。
qq874655551 2011-09-03
  • 打赏
  • 举报
回复
1楼的大哥真棒,一下就解决了!!
还想再追加个问题,就是吧字符串
$str="E8A5BFE6B8B8E8AEB0E6B0B4E6B592E4BCA0E4B889E59BBDE6BC94E4B989E7BAA2E6A5BCE6A2A6"
的内容代替为一个文件中的内容,通过
<?php
header("Content-type:text/html;charset=utf-8");
$str = "读取文件的内容"。//忘记了那个函数,等会儿我查一下看看。
echo pack('H*',$str);//西游记水浒传三国演义红楼梦
?>

显示文件中的内容。
foolbirdflyfirst 2011-09-02
  • 打赏
  • 举报
回复
<?php
header("Content-type:text/html;charset=utf-8");
$str="E8A5BFE6B8B8E8AEB0E6B0B4E6B592E4BCA0E4B889E59BBDE6BC94E4B989E7BAA2E6A5BCE6A2A6";
echo pack('H*',$str);//西游记水浒传三国演义红楼梦
?>

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧