LINUX.ORG.RU

простой вопрос к знатокам Perl


0

0

Программа на Perl читает бинарный файл с помощью функции read, а вот с выводом результатов на экран весьма проблематично... например если программа считает 00 00 00 00 (что есть 0) она воспринимает это как \0. Насколько я ообще заметил, он все считанные значения пытается интерпритировать ASCII кодами... как побороть это?


Что бороть то? Есть функция ord - выдаёт числовой код символа. Как я понимаю, длина строки определяется не \0 терминатором, поэтому проблем нет.

Т.е. можно написать

for ($i = 0; $i < length($str); ++$i) { print ord(substr($str, $i, 1)), "\n"; } И всё должно быть нормально.

И read должен читать не \0 а \0\0\0\0 в этом случае.

anonymous
()
Ответ на: комментарий от anonymous

Нет... не совсем так, то есть совсем наоборот,read читает просто числа, а при выводе и при сравнении они выводятся как "голые" ASCII коды.

bobych
() автор топика
Ответ на: комментарий от bobych

тебе, кстати, anonymous правильно сказал. его код решает твою проблему.

hateful_dead
()
Ответ на: комментарий от godexsoft

Спасибо всем, разобрался, но как-то все равно ощущение что через одно место... :)

bobych
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.