hylianshield/base32-crockford

Crockford 基数32编码器和解码器的实现

1.0.1 2017-01-28 21:12 UTC

This package is auto-updated.

Last update: 2024-08-29 03:47:27 UTC


README

本软件包包含一个编码器/解码器,实现了 Crockford 基数32 的实现。

安装

composer require hylianshield/base32-crockford:^1.0

规范

使用方法

<?php
use HylianShield\Encoding\Base32CrockfordEncoder;

$encoder = new Base32CrockfordEncoder();

$encoded = $encoder->encode(1337);        // 0000019S5
$decoded = $encoder->decode('0000019S5'); // 1337

限制

尽管大数可以被正确编码,但PHP内建的乘法运算在数字太大时无法返回正确响应。

这可以通过使用 BC Math 来解决,但由于它默认未安装,这个实现有一个上限。

在测试的系统中,上限在 18.014.398.509.481.98236.028.797.018.963.966 之间。读作:强制的18个万亿和强制的36个万亿。这在使用不同的CPU架构时可能会有所不同。

查看 示例脚本 以重现这些发现。或者简单地运行

composer example

这将输出

... previous rows ...
#2251799813685246 => 000001ZZ-ZZZZZZZYN => 2251799813685246
#4503599627370494 => 000003ZZ-ZZZZZZZY7 => 4503599627370494
#9007199254740990 => 000007ZZ-ZZZZZZZYG => 9007199254740990
#18014398509481982 => 00000FZZ-ZZZZZZZY$ => 18014398509481982
#36028797018963966 => 00001000-0000000Y~ => 
	Check symbol "~" (33) mismatches "10000000000Y" (36028797018963998).

可以看到左边的数字不再与右边的数字匹配。