1

我想做一个在线的php hexeditor,用户上传一个文件,服务器对其执行指定的hexedit,然后将新文件保存在服务器上。我在想我应该写一个 .bat 文件,在 Windows 上打开一个十六进制编辑器,执行指定的操作,然后返回新文件。我可以使用 php 函数 system() 或类似的东西。有人知道做这一切的好方法吗?

4

1 回答 1

1

您当然可以仅使用 PHP 来实现这一点。

你需要做的是:

  • 以二进制形式读取文件
  • 转换为十六进制表示
  • 以您喜欢的方式显示

查看fread函数,有一个示例显示如何将文件读取为二进制文件。

然后使用bin2hex函数,它将为您提供二进制数据的十六进制表示。

这是一个简单的例子:

<?php
$filename = "c:\\files\\somepic.gif";
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize($filename));
fclose($handle);

$cols = 8;
$hex = bin2hex($contents);
$hex_split = str_split($hex,4*$cols);

foreach($hex_split as $h)
{
  $tmp = str_split($h, 4);
  foreach($tmp as $t)
    echo $t.' ';
  echo "\r\n";
}
?>

例如,您将获得:

d45b 0500 0000 0000 0c00 0000 0000 0000 
0000 0000 0000 0000 0100 0000 0000 0000 
0000 0000 0000 0000 0100 0000 0300 0000 
0000 0000 0000 0000 0000 0000 0000 0000 
e05b 0500 0000 0000 f400 0000 0000 0000 
0000 0000 0000 0000 0100 0000 0000 0000 
0000 0000 0000 0000
于 2010-06-23T23:33:50.207 回答