Подтвердить что ты не робот

Может ли кто-нибудь объяснить мне функцию pack() в PHP?

Я хотел бы узнать больше о функции pack() в PHP: http://fi.php.net/manual/en/function.pack.php

Я знаю, что он упаковывает данные в двоичные файлы, но я не уверен, что все эти V V n N c C означают, и мне было интересно, может ли кто-то быть добрым и дать мне практическую демонстрацию, когда использовать какие форматы?

Онлайн-документация, для изменения, отсутствие информации, на мой взгляд.

4b9b3361

Ответ 1

Это означает, что вы хотите, чтобы данные, которые вы упаковываете, были представлены в двоичном формате:

так

$bin = pack("v", 1); => 0000000000000001 (16 бит)

где

$bin = pack("V", 1) => 00000000000000000000000000000001 (32 бит)

Он сообщает пакет, как вы хотите данные, представленные в двоичных данных. Этот код продемонстрирует это ниже. Обратите внимание, что вы можете распаковать формат, из которого вы упаковали данные как.

<?php

$bin = pack("S", 65535);
$ray = unpack("S", $bin);
echo "UNSIGNED SHORT VAL = ", $ray[1], "\n";

$bin = pack("S", 65536);
$ray = unpack("S", $bin);
echo "OVERFLOW USHORT VAL = ", $ray[1], "\n";

$bin = pack("V", 65536);
$ray = unpack("V", $bin);
echo "SAME AS ABOVE BUT WITH ULONG VAL = ", $ray[1], "\n";
?>

Ответ 2

Как указано в документации php для пакета, функция заимствована из функции Perl pack.

Посмотрите документацию Perl для пакета, в частности раздел примеров в самой нижней части страницы. PHP-пакет не реализует все форматы, но документация Perl для этой функции лучше справляется с предоставлением примеров и объяснением каждого формата.