2011-04-14 125 views
2

我有一個文件的內容表示爲一個十六進制字符串,我想從該十六進制字符串重新創建該文件。我該怎麼做?PHP:從HEX字符串創建文件

附加信息
十六進制字符串是從火狐存儲器緩存項採取諸如以下之一:

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

我處理從這些條目中的<pre>元件以提取並連接所有的十六進制值。所以從緩存條目獲得的以下數據輸出線:

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

我生產這個

89504e470d0a1a0a0000000d49484452 

我重複相同的過程對每個線,使得我最終用含1名大的字符串所有十六進制值連接在一起。

+0

展開你的問題。什麼被「詛咒」?你在談論文件的二進制值或其他東西的編碼嗎? – 2011-04-14 11:54:54

+0

請參閱**其他信息** – Max 2011-04-14 15:06:11

+0

您可以使用[這個小腳本](https://gist.github.com/zxcmehran/b4cab69b70166187f5cb)提取Firefox和Chrome的緩存條目。 – zxcmehran 2015-10-17 17:25:46

回答

4

您可以使用pack

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

這會變成十六進制的八位字節的字符串轉換成二進制:

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

我測試了你的方法,但它不起作用。請您重新評估我的問題,並考慮到我添加到**中的其他信息**? – Max 2011-04-14 15:05:07

+0

@ user359650:它應該無論如何工作。 – Gumbo 2011-04-14 15:32:23

+0

確實如此。我的錯。我的腳本沒有正確得到十六進制輸出。現在全部修復:) – Max 2011-04-15 08:09:30