PHP中与Python的struct等价的实现
我正在尝试把以下的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中的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];