gpt4 book ai didi

PHP 字符串到十六进制/字节?

转载 作者:搜寻专家 更新时间:2023-10-31 21:34:35 24 4
gpt4 key购买 nike

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

//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 个字节并将它们更改为一些字符值。例如:

//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);

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

我试过使用 unpack()、pack() 函数,但我无法让它工作...我也尝试过 ord() 函数,但随后将它们保存为整数,但我想保存字符串的字节。

最佳答案

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

根据文档,这大致就是您想要的。 (但是 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

关于PHP 字符串到十六进制/字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23020777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com