{"id":21194147,"url":"https://github.com/petrknap/php-binary","last_synced_at":"2026-02-25T22:32:00.956Z","repository":{"id":230695592,"uuid":"779822706","full_name":"petrknap/php-binary","owner":"petrknap","description":"Library for work with binary data and objects","archived":false,"fork":false,"pushed_at":"2025-04-27T21:05:00.000Z","size":95,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-10T08:06:41.594Z","etag":null,"topics":["ascii","base64","binary","checksum","compression","decoder","decompression","encoder","helper","hexadecimal","igbinary","php","php-library","serializer","zlib"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/petrknap.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yaml","license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"custom":"https://petrknap.github.io/donate.html"}},"created_at":"2024-03-30T21:54:31.000Z","updated_at":"2025-05-20T17:21:30.000Z","dependencies_parsed_at":"2024-03-31T10:24:38.604Z","dependency_job_id":"6fdfde37-ca16-47a9-a73d-fd4db071f054","html_url":"https://github.com/petrknap/php-binary","commit_stats":null,"previous_names":["petrknap/php-binary"],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/petrknap/php-binary","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/petrknap%2Fphp-binary","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/petrknap%2Fphp-binary/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/petrknap%2Fphp-binary/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/petrknap%2Fphp-binary/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/petrknap","download_url":"https://codeload.github.com/petrknap/php-binary/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/petrknap%2Fphp-binary/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29843420,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T21:18:31.832Z","status":"ssl_error","status_checked_at":"2026-02-25T21:18:29.265Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ascii","base64","binary","checksum","compression","decoder","decompression","encoder","helper","hexadecimal","igbinary","php","php-library","serializer","zlib"],"created_at":"2024-11-20T19:19:51.330Z","updated_at":"2026-02-25T22:32:00.941Z","avatar_url":"https://github.com/petrknap.png","language":"PHP","funding_links":["https://petrknap.github.io/donate.html"],"categories":[],"sub_categories":[],"readme":"# Library for work with binary data and objects\n\nSimple library for work with binary data and objects in PHP.\nSee 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).\n\n## Coder\n\n```php\nnamespace PetrKnap\\Binary;\n\n$data = base64_decode('hmlpFnFwbchsoQARSibVpfbWVfuwAHLbGxjFl9eC8fiGaWkWcXBtyGyhABFKJtWl9tZV+7AActsbGMWX14Lx+A==');\n$encoded = Binary::encode($data)-\u003echecksum()-\u003ezlib()-\u003ebase64(urlSafe: true)-\u003edata;\n$decoded = Binary::decode($encoded)-\u003ebase64()-\u003ezlib()-\u003echecksum()-\u003edata;\n\nprintf('Data was coded into `%s` %s.', $encoded, $decoded === $data ? 'successfully' : 'unsuccessfully');\n```\n\n## Serializer\n\n```php\nnamespace PetrKnap\\Binary;\n\n$data = [\n    'type' =\u003e 'image/png',\n    'data' =\u003e base64_decode('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAA1JREFUGFdj+L+U4T8ABu8CpCYJ1DQAAAAASUVORK5CYII='),\n];\n$serialized = Binary::serialize($data);\n$unserialized = Binary::unserialize($serialized);\n\nprintf('Data was serialized into `%s` %s.', base64_encode($serialized), $unserialized === $data ? 'successfully' : 'unsuccessfully');\n```\n\n## Self-serializer\n\n```php\nnamespace PetrKnap\\Binary;\n\nclass DataObject implements Serializer\\SelfSerializerInterface\n{\n    use Serializer\\SelfSerializerTrait;\n    \n    public function __construct(\n        public string $data,\n    ) {\n        $this-\u003ereferencesToConstructorArgs = [\n            \u0026$this-\u003edata,\n        ];\n    }\n}\n\n$instance = new DataObject('Lorem ipsum dolor sit amet, consectetur adipiscing elit.');\n$instance-\u003edata .= ' Duis venenatis ultricies elementum.';\n$binary = $instance-\u003etoBinary();\n$binaryFromHelper = Binary::asBinary($instance);\n\nprintf(\n    'Data object was serialized into `%s` %s.',\n    base64_encode($binary),\n    $binary === $binaryFromHelper \u0026\u0026 $instance == DataObject::fromBinary($binary) ? 'successfully' : 'unsuccessfully',\n);\n```\n\n## Byter\n\n```php\nnamespace PetrKnap\\Binary;\n\n$data = base64_decode('hmlpFnFwbchsoQARSibVpfbWVfuwAHLbGxjFl9eC8fiGaWkWcXBtyGyhABFKJtWl9tZV+7AActsbGMWX14Lx+A==');\n$sha1 = sha1($data, binary: true);\n$md5 = md5($data, binary: true);\n$unbitten = Binary::unbite($sha1, $md5, $data);\n[$sha1Bite, $md5Bite, $dataBite] = Binary::bite($unbitten, 20, 16);\n\nprintf(\n    'Hashes and data was unbitten into `%s` %s.',\n    base64_encode($unbitten),\n    $sha1Bite === $sha1 \u0026\u0026 $md5Bite === $md5 \u0026\u0026 $dataBite === $data ? 'successfully' : 'unsuccessfully',\n);\n```\n\n## ASCII\n\n```php\nnamespace PetrKnap\\Binary;\n\nprintf(Ascii::RecordSeparator-\u003ejoin(\n    Ascii::UnitSeparator-\u003ejoin('200', 'EUR', 'Maya Wilson'),\n    Ascii::UnitSeparator-\u003ejoin('1600', 'USD', 'Quinton Rice'),\n));\n```\n\n---\n\nRun `composer require petrknap/binary` to install it.\nYou can [support this project via donation](https://petrknap.github.io/donate.html).\nThe project is licensed under [the terms of the `LGPL-3.0-or-later`](./COPYING.LESSER).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpetrknap%2Fphp-binary","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpetrknap%2Fphp-binary","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpetrknap%2Fphp-binary/lists"}