sysbot/bin

基本二进制序列化/反序列化工具,支持32位和64位PHP版本。

1.1.2 2022-06-21 22:26 UTC

This package is auto-updated.

Last update: 2024-09-22 03:29:09 UTC


README

License Required PHP Version Latest Stable Version Tests Dependencies Code Quality

Sysbot/bin是Sysbot使用的库。它处理二进制数据的序列化和反序列化,支持32位和64位系统。

变更日志

您可以在这里找到变更日志。

安装

使用composer安装库

$ composer require sysbot/bin --prefer-stable

(32位系统) 您还必须安装所需的依赖项brick/math

$ composer require "brick/math:^0.10"

使用方法

以下是一个使用此库的示例。

<?php

require_once 'vendor/autoload.php';

use Sysbot\Bin\Serializer;
use Sysbot\Bin\Deserializer;

// Serialization

$serializer = new Serializer();

$serializer->addLong(15); // adds a 32-bit integer (little-endian)

$long = PHP_INT_MAX;

if (PHP_INT_SIZE === 4) { // 32-bit systems
    // since 32-bit systems can't handle 64-bit numbers, we must relay on the BigInteger class
    $long = BigInteger::of('9223372036854775807');
}
$serializer->addLongLong($long, true); // adds a 64-bit integer (big-endian)

$serializer->addString('Hi mom!'); // adds a string

// casting a Serializer instance to a string will return the bytes
echo bin2hex((string)$serializer); // outputs "0f0000007fffffffffffffff074869206d6f6d21"


// Deserialization

$deserializer = new Deserializer((string)$serializer);

echo $deserializer->readLong(); // reads a 32-bit integer (little-endian), outputs "15"

$long = $deserializer->readLongLong(true); // reads a 64-bit integer (big-endian)

if (PHP_INT_SIZE === 4) {
    $long = (string)$long; // on 32-bit systems, an instance of the BigInteger class will be returned: to get the number, we must cast to string
}

echo $long; // outputs "9223372036854775807"

echo $deserializer->readString(); // reads a string, outputs "Hi mom!"