PHPackages                             petrknap/binary - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. petrknap/binary

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

petrknap/binary
===============

Library for work with binary data and objects

v4.3.1(1y ago)1373[1 issues](https://github.com/petrknap/php-binary/issues)2LGPL-3.0-or-laterPHPPHP &gt;=8.1

Since Mar 31Pushed 1y ago1 watchersCompare

[ Source](https://github.com/petrknap/php-binary)[ Packagist](https://packagist.org/packages/petrknap/binary)[ Docs](https://github.com/petrknap/php-binary)[ Fund](https://petrknap.github.io/donate.html)[ RSS](/packages/petrknap-binary/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (5)Versions (18)Used By (2)

Library for work with binary data and objects
=============================================

[](#library-for-work-with-binary-data-and-objects)

Simple library for work with binary data and objects in PHP. See the examples below for more information, or check out [`Encoder`](./src/Encoder.php), [`Decoder`](./src/Decoder.php), [`Serializer`](./src/Serializer.php), [`Byter`](./src/Byter.php) and [`Ascii`](./src/Ascii.php).

Coder
-----

[](#coder)

```
namespace PetrKnap\Binary;

$data = base64_decode('hmlpFnFwbchsoQARSibVpfbWVfuwAHLbGxjFl9eC8fiGaWkWcXBtyGyhABFKJtWl9tZV+7AActsbGMWX14Lx+A==');
$encoded = Binary::encode($data)->checksum()->zlib()->base64(urlSafe: true)->data;
$decoded = Binary::decode($encoded)->base64()->zlib()->checksum()->data;

printf('Data was coded into `%s` %s.', $encoded, $decoded === $data ? 'successfully' : 'unsuccessfully');
```

Serializer
----------

[](#serializer)

```
namespace PetrKnap\Binary;

$data = [
    'type' => 'image/png',
    'data' => base64_decode('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAA1JREFUGFdj+L+U4T8ABu8CpCYJ1DQAAAAASUVORK5CYII='),
];
$serialized = Binary::serialize($data);
$unserialized = Binary::unserialize($serialized);

printf('Data was serialized into `%s` %s.', base64_encode($serialized), $unserialized === $data ? 'successfully' : 'unsuccessfully');
```

Self-serializer
---------------

[](#self-serializer)

```
namespace PetrKnap\Binary;

class DataObject implements Serializer\SelfSerializerInterface
{
    use Serializer\SelfSerializerTrait;

    public function __construct(
        public string $data,
    ) {
        $this->referencesToConstructorArgs = [
            &$this->data,
        ];
    }
}

$instance = new DataObject('Lorem ipsum dolor sit amet, consectetur adipiscing elit.');
$instance->data .= ' Duis venenatis ultricies elementum.';
$binary = $instance->toBinary();
$binaryFromHelper = Binary::asBinary($instance);

printf(
    'Data object was serialized into `%s` %s.',
    base64_encode($binary),
    $binary === $binaryFromHelper && $instance == DataObject::fromBinary($binary) ? 'successfully' : 'unsuccessfully',
);
```

Byter
-----

[](#byter)

```
namespace PetrKnap\Binary;

$data = base64_decode('hmlpFnFwbchsoQARSibVpfbWVfuwAHLbGxjFl9eC8fiGaWkWcXBtyGyhABFKJtWl9tZV+7AActsbGMWX14Lx+A==');
$sha1 = sha1($data, binary: true);
$md5 = md5($data, binary: true);
$unbitten = Binary::unbite($sha1, $md5, $data);
[$sha1Bite, $md5Bite, $dataBite] = Binary::bite($unbitten, 20, 16);

printf(
    'Hashes and data was unbitten into `%s` %s.',
    base64_encode($unbitten),
    $sha1Bite === $sha1 && $md5Bite === $md5 && $dataBite === $data ? 'successfully' : 'unsuccessfully',
);
```

ASCII
-----

[](#ascii)

```
namespace PetrKnap\Binary;

printf(Ascii::RecordSeparator->join(
    Ascii::UnitSeparator->join('200', 'EUR', 'Maya Wilson'),
    Ascii::UnitSeparator->join('1600', 'USD', 'Quinton Rice'),
));
```

---

Run `composer require petrknap/binary` to install it. You can [support this project via donation](https://petrknap.github.io/donate.html). The project is licensed under [the terms of the `LGPL-3.0-or-later`](./COPYING.LESSER).

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance28

Infrequent updates — may be unmaintained

Popularity15

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~24 days

Recently: every ~4 days

Total

17

Last Release

386d ago

Major Versions

v1.3.0 → v2.0.02024-04-03

v2.1.0 → v3.0.02024-04-17

v3.1.0 → v4.0.02024-04-27

v4.1.1 → v5.0.0-rc.12025-04-07

### Community

Maintainers

![](https://www.gravatar.com/avatar/c0e19f2ea17567eb9f536d1e00595b83630dfb8b2df6e7e422e06a9a48e85585?d=identicon)[petrknap](/maintainers/petrknap)

---

Top Contributors

[![petrknap](https://avatars.githubusercontent.com/u/8299754?v=4)](https://github.com/petrknap "petrknap (71 commits)")

---

Tags

asciibase64binarychecksumcompressiondecoderdecompressionencoderhelperhexadecimaligbinaryphpphp-libraryserializerzlibhelpercompressionbase64serializerbinaryencoderdecoderhexadecimalchecksumdecompressionigbinaryzlib

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP\_CodeSniffer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/petrknap-binary/health.svg)

```
[![Health](https://phpackages.com/badges/petrknap-binary/health.svg)](https://phpackages.com/packages/petrknap-binary)
```

###  Alternatives

[dflydev/base32-crockford

Encode/decode numbers using Douglas Crockford's Base32 Encoding

14379.1k1](/packages/dflydev-base32-crockford)[xobotyi/basen

Text and integers encoding utilities for PHP with no extensions dependencies. Base32, Base58, Base64 and much more!

1219.6k](/packages/xobotyi-basen)[base62/base62

base62 encoder and decoder also for big numbers with Laravel integration

169.5k](/packages/base62-base62)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
