Декодирование ASCII строки \x00\x00\x00\x02\ с помощью PHP

Всем привет, столкнулся с проблемой что в кеше храним строку в виде \x00\x00\x00\x02\x14\x1A\x06\x00\x14\x0C\x11

и хотелось бы ее расшифровать

подскажите ее както можно расшифровать чтобы она была читаемой желательно с помощью PHP ?


Ответы (1 шт):

Автор решения: Антон Виноградов

С помощью PHP декодируется 2 видами:

Функция декодирования бинарных данных (если строка уже в бинарном виде):

function binDecode($bin){
    $value = unpack("H*", $bin);
    return hex2bin($value[1]);
}
$bin = "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x41\x42\x43\x44\x45\x46";
echo binDecode($bin);

В результате получаем:

0123456789ABCDEF

Если же данные именно в таком виде, \x30\x31, то сначала их надо перевести в бинарный вид, и функция будет выглядеть так:

function binDecode($bin){
    $result = '';
    $array = explode('\x', $bin);
    for($i=0; $i <= count($array); $i++){
        $result .= hex2bin($array[$i]);        
    }
    return $result;
}

Пример:

$bin = '\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x41\x42\x43\x44\x45\x46';
echo binDecode($bin);

Так же вернёт ответ:

0123456789ABCDEF

Ваши бинарные данные

\x00\x00\x00\x02\x14\x1A\x06\x00\x14\x0C\x11

не смогут прочитаться как текст, но вернут что то типа:

����

→ Ссылка