W3docs

hex2bin()

Функция hex2bin() преобразует шестнадцатеричную строку обратно в двоичное представление. Синтаксис функции hex2bin() выглядит следующим образом:

Функция PHP hex2bin() декодирует строку шестнадцатеричных цифр обратно в исходные байты, которые они представляют. Она является точной обратной функцией для bin2hex(): если bin2hex() превращает каждый байт в два шестнадцатеричных символа, то hex2bin() считывает эти пары символов и восстанавливает исходную байтовую строку. Доступна начиная с PHP 5.4, её синтаксис выглядит следующим образом.

Эта страница рассматривает синтаксис, возвращаемое значение, рабочий пример декодирования, безопасную обработку неверного ввода и двустороннее преобразование с bin2hex().

Синтаксис

string|false hex2bin ( string $string )

Функция принимает один обязательный параметр — $string, шестнадцатеричную строку для преобразования. Каждая пара шестнадцатеричных символов (например, 48) соответствует одному байту (H). Поскольку два символа образуют один байт, длина входной строки должна быть чётной.

Возвращаемое значение

hex2bin() возвращает декодированную двоичную строку в случае успеха или false при неудаче. Функция завершается ошибкой (и выводит предупреждение), если входная строка имеет нечётную длину или содержит символы, не являющиеся допустимыми шестнадцатеричными цифрами (0-9, a-f, A-F). Предварительная проверка входных данных — показана ниже — позволяет избежать таких предупреждений.

Вот пример использования функции hex2bin():

Декодирование шестнадцатеричной строки

php— editable, runs on the server

В этом примере переменная $hex_string содержит шестнадцатеричную строку. Мы используем функцию hex2bin() для преобразования шестнадцатеричной строки в её двоичное представление.

Вывод этого кода будет следующим:

Hello World

Как видно, функция hex2bin() преобразовала шестнадцатеричную строку в её двоичное представление — строку "Hello World".

Проверка входных данных перед декодированием

Функция hex2bin() возвращает false, если входная строка содержит недопустимые шестнадцатеричные символы. Чтобы корректно обработать такую ситуацию и избежать предупреждений, можно предварительно проверить входные данные с помощью ctype_xdigit() (которая проверяет, что каждый символ является шестнадцатеричной цифрой):

php— editable, runs on the server

В этом примере переменная $invalid_hex_string содержит шестнадцатеричную строку нечётной длины (и потому недопустимую). Мы используем ctype_xdigit(), чтобы убедиться, что строка содержит только допустимые шестнадцатеричные символы, прежде чем вызывать hex2bin(). Если проверка не проходит, выводится сообщение об ошибке; в противном случае строка безопасно преобразуется в двоичную.

Двустороннее преобразование с bin2hex()

hex2bin() и bin2hex() являются обратными функциями, поэтому кодирование строки с последующим декодированием возвращает исходное значение. Это удобно, когда нужно хранить или передавать двоичные данные в виде простого ASCII (например, в URL или текстовом столбце) и впоследствии восстанавливать их:

<?php
$original = "Hello World";

$hex = bin2hex($original);   // 48656c6c6f20576f726c64
echo $hex . "\n";

$decoded = hex2bin($hex);    // Hello World
echo $decoded . "\n";

var_dump($original === $decoded); // bool(true)
?>

Вывод этого кода будет следующим:

48656c6c6f20576f726c64
Hello World
bool(true)

Поскольку декодированное значение идентично исходному, var_dump() возвращает bool(true).

Когда использовать

Используйте hex2bin(), когда вы получаете данные, закодированные в шестнадцатеричном виде, и вам нужны исходные байты — распространённые случаи включают чтение хешей или ключей, хранящихся в виде шестнадцатеричных строк, декодирование значений, созданных bin2hex(), и восстановление двоичных данных (изображения, зашифрованные блобы), которые передавались в виде текста.

Связанные функции

  • bin2hex() — преобразует двоичную строку в шестнадцатеричное представление (обратная функция для hex2bin()).
  • dechex() — преобразует десятичное целое число в шестнадцатеричную строку.
  • hexdec() — преобразует шестнадцатеричную строку в десятичное целое число.

Практика

Практика
Что делает функция hex2bin() в PHP?
Что делает функция hex2bin() в PHP?
Was this page helpful?