#php #string #file #hex
#php #строка #файл #шестнадцатеричный
Вопрос:
У меня есть содержимое файла, представленное в виде шестнадцатой строки, и я хочу воссоздать этот файл из этой шестнадцатой строки. Как я могу это сделать?
Дополнительная информация
Шестнадцатеричная строка взята из записей кэша памяти Firefox, таких как приведенная ниже:
about:cache-entry?client=HTTPamp;sb=1amp;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 большая строка, содержащая все объединенные шестнадцатеричные значения.
Комментарии:
1. Разверните свой вопрос. Что было «шестнадцатеричным»? Вы говорите о кодировании двоичных значений файла или о чем-то другом?
2. пожалуйста, ознакомьтесь с дополнительной информацией
3. Вы можете использовать этот небольшой скрипт для извлечения записей кэша Firefox и chrome.
Ответ №1:
Вы можете использовать pack
:
file_put_contents($filename, pack('H*', $hex));
Это превратит строку октетов в шестнадцатеричной системе счисления в двоичную:
var_dump(pack('H*', '313233')); // string(3) "123"
Комментарии:
1. Я тестировал ваш метод, но он не работает. Не могли бы вы, пожалуйста, пересмотреть мой вопрос с учетом того, что я добавил в дополнительную информацию ?
2. Действительно, это так. Моя ошибка. Мой скрипт не получал шестнадцатеричный вывод должным образом. Теперь все исправлено 🙂