Декодирование 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
не смогут прочитаться как текст, но вернут что то типа:
����