我正在尝试将以下Python代码移植到PHP,但我找不到与Python的struct
等效的PHP。 (我特别需要等同于struct.calcsize()
)是否有可以使用的PHP等价物?
import struct
attr_fmt = ">iii4x"
attr_size = struct.calcsize(self.attr_fmt)
对于那些不熟悉Python,但使用PHP的人,来自struct
manual page:
此模块执行Python值和表示为Python字符串的C结构之间的转换。这可用于处理存储在文件中的二进制数据或来自网络连接以及其他来源。它使用Format Strings作为C结构布局的简洁描述以及与Python值的预期转换。
答案 0 :(得分:4)
我不熟悉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];