danog / phpstruct
Python struct模块的PHP实现。
1.2
2016-11-14 15:09 UTC
Requires
- php: >=5.6.0
Requires (Dev)
- phpunit/phpunit: 5.4.*
README
采用MIT许可证。
Python struct模块的PHP实现。
这个库是为了帮助我开发一个mtproto协议客户端而创建的。
它支持php 5.6、php 7和HHVM。
函数和格式与Python的struct模块(https://docs.pythonlang.cn/3/library/struct.html)中的完全相同
这个库可以用来将字符串、整数、浮点数、字符和布尔值打包/解包成字节。它比PHP原生的pack和unpack实现有很多优点,例如
- 自定义字节序。
- 许多有用的格式,这些格式在原生的实现中不存在。
- pack和unpack的格式字符串语法与Python的struct模块相同。
- unpack的结果是正常数字索引数组,从0开始,就像应该的那样。
- unpack的结果具有类型转换的值(整数格式为int,布尔格式为bool,浮点格式为float,其他所有格式为字符串)。
- 实现了calcsize函数。
- 即使在32位系统上,也可以使用q和Q格式(缺点是精度有限)。
- 支持@修饰符的填充。
目前,对于f和d格式,某些机器上可能无法正确地使用自定义字节大小。
安装
使用composer安装
composer require danog/phpstruct
使用方法
动态(推荐)
require('vendor/autoload.php');
$struct = new \danog\PHP\StructClass();
$pack = $struct->pack("2cxi", "ab", 44);
$unpack = $struct->unpack("2cxi", $pack);
var_dump($unpack);
$count = $struct->calcsize("2cxi");
动态(在实例化时指定格式字符串)
require('vendor/autoload.php');
$struct = new \danog\PHP\StructClass("2cxi");
$pack = $struct->pack("ab", 44);
$unpack = $struct->unpack($pack);
var_dump($unpack);
$count = $struct->size;
$formatstring = $struct->format;
静态
require('vendor/autoload.php');
$pack = \danog\PHP\Struct::pack("2cxi", "ab", 44);
$unpack = \danog\PHP\Struct::unpack("2cxi", $pack);
var_dump($unpack);
$count = \danog\PHP\Struct::calcsize("2cxi");