PHP字符串为十六进制/字节



我正在尝试编辑文件的字节数。更像是一个十六进制查看器/编辑器。例如:

//Adding the file bytes to array (byte array)
$bytes = str_split(file_get_contents("test.file")); //It can be any file. like jpg,png, exe, jar...

现在我只想编辑5个字节,并将它们更改为一些chracter值。例如:

//Adding the file bytes to an array (byte array)
$bytes = str_split(file_get_contents("test.file")); //It can be any file. like jpg,png, exe,jar...
$string = "hello";
$bytes[5] = $string[0];
$bytes[6] = $string[1];
$bytes[7] = $string[3];
$bytes[8] = $string[4];
file_put_contents("edited.file", $bytes);

但它就是不起作用。。。我需要首先将$字符串的字母转换为字节,然后编辑字节数组的特定字节($字节),而不会损坏文件。

我试过使用unpack()、pack(。。。我也尝试过ord()函数,但后来将它们保存为interger,但我想保存字符串的字节数。

听起来您可能需要使用unpack来读取二进制数据,然后打包将其写回。

根据文件,这大概就是你想要的。(然而YMMV,因为我从来没有真正为自己做过这件事。)

   <?php
       $binarydata = file_get_contents("test.file");
       $bytes = unpack("s*", $binarydata);
       $string = "hello";
       $bytes[5] = $string[0];
       $bytes[6] = $string[1];
       $bytes[7] = $string[3];
       $bytes[8] = $string[4];
       file_put_contents("edited.file", pack("s*", $bytes));
   ?>

根据注释,解包生成的数组的索引从1开始,而不是更正常的0。此外,我再怎么强调也不为过,我根本没有测试过这个建议。最好把它当作一个有根据的猜测。

更多信息:http://www.php.net/manual/en/function.unpack.php

更多信息:http://www.php.net/manual/en/function.pack.php

相关内容

  • 没有找到相关文章

最新更新