PHP эквивалент структуры Python - PullRequest
2 голосов
/ 22 марта 2011

Я пытаюсь перенести следующий код Python на PHP, но не могу найти PHP, эквивалентный Python struct. (и мне конкретно нужен эквивалент struct.calcsize()) Есть ли какой-нибудь эквивалент PHP, который я мог бы использовать?

import struct
attr_fmt = ">iii4x"
attr_size = struct.calcsize(self.attr_fmt)

EDIT:

Для тех, кто не знаком с Python, но знаком с PHP, со страницы руководства struct :

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

1 Ответ

4 голосов
/ 22 марта 2011

Я не знаком со структурой Python, но она немного похожа на PHP pack и unpack. Я не знаю ни одного прямого способа определить размер заранее.

Вот пример, который я считаю таким же, как ваш:

$fmt = 'N3x4'; // three 32-bit big endian integers followed by 4 bytes of padding
$s = pack($fmt, 0, 0, 0); // pack the data into a string
$size = strlen($s);       // find the length of the data

В этом примере я выбрал три фиктивных 0 для использования в качестве аргументов для трех целых чисел.

Чтобы распаковать данные, это будет выглядеть так:

$fmt = 'N3/x4';
$a = unpack($fmt, $s);
echo $a[0];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...