PHP中与Python的struct等价的实现

2 投票
1 回答
1594 浏览
提问于 2025-04-16 14:09

我正在尝试把以下的Python代码转换成PHP,但我找不到PHP中和Python的struct相对应的东西。(我特别需要和struct.calcsize()相对应的功能)有没有什么PHP的替代方案可以用呢?

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

编辑:

对于那些不熟悉Python但熟悉PHP的人,来自struct手册页面的说明:

这个模块可以在Python值和用Python字符串表示的C结构之间进行转换。它可以用来处理存储在文件中的二进制数据,或者来自网络连接等其他来源的数据。它使用格式字符串来紧凑地描述C结构的布局,以及与Python值之间的转换。

1 个回答

4

我对Python的struct模块不太熟悉,但它看起来有点像PHP中的packunpack。我不知道有没有直接的方法可以提前确定大小。

这里有一个我认为和你的例子相同的示例:

$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];

撰写回答