PHP:从一个十六进制字符串创建文件


PHP: create file from an HEX string

我有一个十六进制字符串表示的文件的内容,我想从该十六进制字符串重新创建该文件。我该怎么做呢?


十六进制字符串取自firefox内存缓存条目,如下所示:

about:cache-entry?client=HTTP&sb=1&key=http://www.google.co.uk/images/nav_logo40.png

我正在处理这些条目中的<pre>元素,以提取和连接HEX值。因此,从下面从缓存项获得的数据输出行:

00000000:  89  50  4e  47  0d  0a  1a  0a  00  00  00  0d  49  48  44  52  .PNG........IHDR

我正在制作这个

89504e470d0a1a0a0000000d49484452

我对每一行都重复同样的过程,所以我最终得到一个包含所有十六进制值的大字符串。

您可以使用pack:

file_put_contents($filename, pack('H*', $hex));

将一个十六进制的八位字节字符串转换成二进制:

var_dump(pack('H*', '313233'));  // string(3) "123"