首页 > 解决方案 > 在 php 中替代 linux 中的 xxd 命令

问题描述

我需要以与 Linux 程序相同的方式将 bin 文件转换为 PHP 中的字符串。

在linux中:xxd -g 1 data.bin并输出:0000000: 02 50 45 10 02 06 54 62 43 20 05 20 11 07 21 12 .PE...TbC . ..!.

在 PHP 中,我尝试使用该bin2hex函数,但我只得到数字02 50 45 10 02 06 54 62 43 20 05 20 11 07 21 12。我还需要一个偏移量和文本表示。

偏移量是我在上面输入的字符串中的行号、第一个数字和一个冒号 ( 0000000:)。这实际上不是问题,因为我可以编写代码来计算它,但更大的问题是文本表示(.PE...TbC . ..!.)。

有人可以帮忙吗?我可以为此使用哪些功能?

标签: phpbinxxdbin2hex

解决方案


您可以使用正则表达式将不可打印的字符替换为 a .(或您选择的任何字符)。

$data = hex2bin('02504510020654624320052011072112');
$text_representation = preg_replace('/[^[:print:]]/', '.', $data);
var_dump($text_representation);

推荐阅读