The function pack("H*" , $hex_string); will not work as expected if $hex_string contains an odd number of hexadecimal digits.
For example:
<?php echo ord(pack("H*", 'F')); ?>
will return 240 not 15. Use pack("H*", '0F'); instead.
hex2bin
(PHP >= 5.4.0)
hex2bin — Преобразует шестнадцатеричные данные в двоичные
Описание
string hex2bin
( string
$data
)Декодирует строку данных из шестнадцатеричного представления
Предостережение
Эта функция НЕ конвертирует шестнадцатиричные числа в двоичные. Если нужно именно это, используйте функцию base_convert().
Список параметров
-
data -
Шестнадцатеричное представление данных.
Возвращаемые значения
Возвращает двоичное представление данных, или FALSE в случае возникновения ошибки.
Ошибки
Если во входной шестнадцатиричной строке окажется нечетное число байт, будет выдано
предупреждение E_WARNING.
Список изменений
| Версия | Описание |
|---|---|
| PHP 5.4.1 | Если строка имеет нечетную длину, выбрасывается предупреждение. ВPHP 5.4.0 такая строка принималась, а последний байт просто обрезался. |
Примеры
Пример #1 Пример использования hex2bin()
<?php
$hex = hex2bin("6578616d706c65206865782064617461");
var_dump($hex);
?>
Результатом выполнения данного примера будет что-то подобное:
string(16) "пример hex данных"
Anonymous
23-Feb-2012 02:28
Anonymous
31-Aug-2011 01:32
The function hex2bin does not exist in PHP5.
You can use 'pack' instead :
$binary_string = pack("H*" , $hex_string);
