PHP pack()Функции

PHP Misc 参考手册Справочное руководство по PHP: разное

Примеры

Упаковать данные в бинарную строку:

<?php
echo pack("C3",80,72,80);
?>

Запустить пример »

Определение и использование

Функция pack() упаковывает данные в бинарную строку.

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


Синтаксис

string pack(string $format, mixed $arg1 [, mixed $arg2, ...])
  • $format: Строка, указывающая, как заданныеarg1, arg2, ... аргументы упаковываются. Каждый символ представляет тип данных и размер.
  • $arg1, $arg2, ...: Данные для упаковки. Могут быть целыми числами, числами с плавающей запятой или строками и т. д.

Функция pack() возвращает упакованную бинарную строку или false, если возникает ошибка.


Parameters Описание
format Обязательный. Задает формат, используемый при упаковке данных.

Возможные значения:

Целые числа:

  • c: знаковый символ (1 байт).
  • C: unsigned char (1 байт).
  • s: знаковое короткое целое (2 байта, порядок байтов хоста).
  • S: беззнаковое короткое целое (2 байта, порядок байтов хоста).
  • l: знаковое длинное целое (4 байта, порядок байтов хоста).
  • L: беззнаковое длинное целое (4 байта, порядок байтов хоста).
  • q: знаковое длинное длинное целое (8 байт, порядок байтов хоста).
  • Q: беззнаковое длинное длинное целое (8 байт, порядок байтов хоста).

Числа с плавающей запятой:

  • f: число с плавающей запятой одинарной точности (4 байта, порядок байтов хоста).
  • d: число с плавающей запятой двойной точности (8 байт, порядок байтов хоста).

Строки и другие типы:

  • x: байт NUL (байт заполнения, без аргумента).
  • a: строка, завершающаяся NUL (принимает аргумент как строку).
  • A: строка, дополненная пробелами (принимает аргумент как строку).
  • @: NUL-байты, дополненные до заданной длины.
args+ Необязательно. Указывает один или несколько аргументов для упаковки.

Технические детали

Возвращаемое значение: Возвращает двоичную строку, содержащую данные.
Версия PHP: 4+
Список изменений: Код "Z" был добавлен в PHP 5.5 и имеет ту же функциональность, что и "a", используемый для совместимости с Perl.


Другие примеры

Ниже приведены некоторые примеры использования функции pack().

Упаковать беззнаковое короткое целое и строку:

Пример

$data = pack('S', 65535); // Упаковать беззнаковое короткое целое 65535
echo bin2hex($data); // Вывод: ffff

Упаковать знаковое длинное целое и строку:

Пример

$data = pack('l', -2147483648); // Упаковать знаковое длинное целое -2147483648
echo bin2hex($data); // Вывод: 0000000080000000

Упаковать число с плавающей запятой и строку:

Пример

$data = pack('f', 3.14); // Упаковать число с плавающей запятой 3.14
echo bin2hex($data); // Вывод: 4048f5c3

Примечания

  • pack()Эта функция — мощный инструмент для преобразования данных в двоичный формат, но нужно убедиться, что вы понимаете значение и использование каждого символа в требуемом формате.
  • Проблема порядка байтов (Endianness): В разных системах целые числа и числа с плавающей запятой могут представляться по-разному. Вы можете использоватьpack()иunpack()функцию для обеспечения правильной передачи и разбора данных между разными системами.
  • Вы можете использоватьbin2hex()функцию для преобразования двоичных данных в шестнадцатеричную строку для вывода и отладки.
PHP Misc 参考手册Справочное руководство по разным разделам PHP Другие расширения