2014-12-11 3 views
0

У меня есть строка с несколькими неиспользуемыми байтами. Я хочу преобразовать эту строку в читаемый человеком формат. Непечатаемые charachters могут быть представлены чем-то вроде? или < 07>, печатные картриджи должны оставаться нетронутыми.Как получить читаемую строку из двоичных данных в PHP?

Есть ли простой способ сделать это на PHP?

+3

Можете ли вы объяснить, что такое 'non binary bytes'? – Justinas

+1

Байт всегда двоичный ... Пожалуйста, поставьте нам пример ввода и вывода ... В то же время читайте на 'ord()', 'chr()', 'unpack()' и 'bindec() ' – RichardBernards

ответ

1

Существует много способов сделать что-то подобное.

Мой выбор был бы:

$string = preg_replace_callback('/[\x00-\x08\x0B\x0C\x0E-\x1F]/',function($char) { 
    // format as desired, for instance: 
    return "{".dechex(ord($char[0]))."}"; 
},$string); 

Вы можете определить «не для печати», как вы хотите, то один я там в основном «все до того пространства, но позволяют Tab, CR и LF».

+0

Спасибо, что направили меня в правильном направлении. Мне пришлось заменить двойные кавычки вокруг шаблона на сингл-цитаты. Furhter больше функция принимает массив не один символ. Поэтому мне пришлось изменить его на 'function ($ match) {return" {".dechex (ord ($ match [0]))."} ";}'. – BetaRide

+0

@BetaRide Я обновил свой ответ с этими изменениями - извините за путаницу: D –

Смежные вопросы