PHP читает тело в байтовый массив без использования распаковки

Я пишу скрипт PHP для запуска в apache2. Я получаю байтовый массив с устройства, которое мне нужно проанализировать в объекте. Когда я делаю $ body = file_get_contents (‘php: // input’), я получаю строку. Затем мне нужно сделать распаковку в стиле фанк (‘C *’, $ body). Теперь у меня есть массив, который имеет дополнительный элемент в начале, из процесса распаковки. Кажется, я слишком стараюсь сделать что-то тривиальное.

Есть ли способ просто прочитать тело как байтовый массив и пропустить весь мусор преобразования строк? Давай на PHP! Это просто массив байтов!

2

Решение

Поверьте мне, верьте или нет, в PHP нет конкретных байтовых контейнеров. Вы делаете это правильно. Я разработал несколько бинарных алгоритмов на этом языке, это действительно трудно понять, когда вы пришли из других языков, таких как C ++ или Delphi.

В PHP стандартным контейнером байтового массива является строка. Например:

$myVar = file_get_contents("/folder/myfile.bin");

В этом случае myVar действует как строка, а также как массив байтов.

Единственный способ изменить представление байтов — выполнить операции упаковки и распаковки.

$myByteArray= unpack("N*",$myvar);
for($i = 0; $i < strlen($myByteArray); $i++)
{
echo $myByteArray[$i].'<br/>';
}

Здесь у вас есть несколько хороших объяснений:

http://docstore.mik.ua/orelly/webprog/pcook/ch01_14.htm

http://www.codediesel.com/php/unpacking-binary-data/

И позвольте мне дать вам последний совет, основанный на моем опыте: если вы планируете переносить ваше PHP-приложение на множество различных аппаратных архитектур, позаботьтесь о сохранности при операциях pack / unpack.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]