kafkiansky / binary
用于以任意顺序写入/读取字节的工具。
0.4.4
2024-07-17 05:00 UTC
Requires
- php: >=8.1
- azjezz/psl: ^2.9
Requires (Dev)
- ergebnis/composer-normalize: ^2.41
- phpunit/phpunit: ^10.5
- psalm/plugin-phpunit: ^0.18.4
- squizlabs/php_codesniffer: ^3.8
- vimeo/psalm: ^5.18
This package is auto-updated.
Last update: 2024-09-17 05:20:51 UTC
README
此包可以作为 Composer 依赖项安装。
composer require kafkiansky/binary
此包需要 PHP 8.1 或更高版本。
使用方法
字节序
<?php declare(strict_types=1); require_once __DIR__.'/vendor/autoload.php'; use Kafkiansky\Binary\Endianness; $endian = Endianness::big(); // Big Endian. $endian = Endianness::little(); // Little Endian. $endian = Endianness::network(); // Big Endian. $endian = Endianness::native(); // Machine (native) byte order.
缓冲区
<?php declare(strict_types=1); require_once __DIR__.'/vendor/autoload.php'; use Kafkiansky\Binary\{Buffer, Endianness}; $buffer = Buffer::empty(); // Network byte order (big endian) by default. $buffer = Buffer::empty(Endianness::little()); // Override byte order. // https://kafka.apache.org/protocol.html#The_Messages_CreateTopics $bytes = Buffer::empty() ->writeInt32(1) ->writeInt16(6) ->write('events') ->writeInt32(1) ->writeInt16(1) ->writeInt32(0) ->writeInt32(0) ->reset() ; $buffer = Buffer::fromString($bytes); var_dump( $buffer->consumeInt32(), $buffer->consume($buffer->consumeInt16()), $buffer->consumeInt32(), $buffer->consumeInt16(), $buffer->consumeInt32(), $buffer->consumeInt32(), \assert(0 === \count($buffer)), );
流
<?php declare(strict_types=1); require_once __DIR__.'/../vendor/autoload.php'; use Kafkiansky\Binary\Buffer; $resource = fopen('php://temp', 'a+'); \assert(\is_resource($resource)); $bytes = Buffer::fromResource($resource) ->writeInt32(1) ->writeInt16(6) ->write('events') ->writeInt32(1) ->writeInt16(1) ->writeInt32(0) ->writeInt32(0) ->reset() ; $buffer = Buffer::fromString($bytes); var_dump( $buffer->consumeInt32(), $buffer->consume($buffer->consumeInt16()), $buffer->consumeInt32(), $buffer->consumeInt16(), $buffer->consumeInt32(), $buffer->consumeInt32(), \assert(0 === \count($buffer)), );
可用类型
-
int8
-
uint8
-
int16
-
uint16
-
int32
-
uint32
-
int64
-
uint64
-
f32 (浮点数)
-
f64 (双精度浮点数)
-
字符串
-
varuint
-
varint
测试
$ composer test
许可证
MIT 许可证 (MIT)。更多信息请参阅 许可证文件。