ierusalim/baseconvert

通过任意精度的十进制表示,将任何用户定义的字符集字符串进行转换

0.4.1 2019-06-09 14:41 UTC

This package is auto-updated.

Last update: 2024-09-10 01:52:24 UTC


README

Build Status

通过任意精度的十进制表示,将任何用户定义的字符集字符串进行转换。

安装

BaseConvert.php 文件可以独立使用。

对于 composer

composer require ierusalim/baseconvert

BaseConvert 使用方法

创建 BaseConvert 类的实例,并定义自己的字符集字符串(如果需要)。

不需要为使用十六进制/二进制/base58(与比特币兼容)定义新字母表。

use ierusalim\BaseConvert;

$bc = new BaseConvert;

$hex = "43786437856abcdef";
$b58 = $bc->hextobase58($hex);

echo "$hex => base58: $b58";

函数

  • -> dectohex($dec) -- 将十进制(012345679-base)转换为十六进制(0123456789abcdef-base)
  • -> hextodec($hex) -- 将十六进制(0123456789abcdef-base)转换为十进制(012345679-base)
  • -> dectobits($dec) -- 将十进制(012345679-base)转换为位字符串(01-base)
  • -> bitstodec($bits) -- 将位转换为任意精度的十进制表示
  • -> hextobits($hex) -- 将十六进制(0123456789abcdef-base)转换为位字符串(01-base)
  • -> bitstohex($bits) -- 将位(01-base)转换为十六进制(0123456789abcdef-base)
  • -> dectobase58($dec) -- 将十进制(012345679-base)转换为 base58
  • -> hextobase58($hex) -- 将十六进制(0123456789abcdef-base)转换为 base58
  • -> base58tohex($b58) -- 将 base58 转换为十六进制(0123456789abcdef-base)
  • -> basex_decode($data, $base_id) -- 将任意基转换为十进制
  • -> basex_encode($dec, $base_id) -- 将十进制转换为任意基

vc85 使用方法

vc85 是众多 base85 算法之一,如 ascii85、z85 等。

vc85 编码具有以下特性

  • 每个字符在视觉上独特且易于识别:0123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyzзгджилпфцчшюяБГДЖИЛПФЦЧШЮЯ
  • 编码结果不包含特殊字符;
  • 编码和解码运行速度快。
use ierusalim\BaseConvert;

$bc = new vc85();

$str = "One day I'm gonna fly away One day when heavens calls my name";
$enc = $bc->vc85_encode($str);

echo "result: $enc \n";

// result: RkШжцYNQлAPjhWЮZLжz9XJZEЯeФ3nVXTБЮДbgГЧ3XTБЯVZnЯ67ZnЮtЦYrЯpJXФШGБd0BUdAbЮu81G

$back = $bc->vc85_decode($enc);

echo ($str === $back) ? "OK" : "Fail";

vc85 函数

  • -> vc85_encode($str) -- 将二进制数据转换为 vc85
  • -> vc85_decode($str) -- 将 vc85 转换为二进制数据

base6400 函数

  • -> base6400_encode($str) -- 将二进制转换为 base6400
  • -> base6400_decode($str) -- 将 base6400 转换为二进制
  • -> explodeToUnicode($str) -- 将字符串从 utf-8 转换为 Unicode 数组
  • -> implodeUnicode($arr) -- 将 Unicode 数组转换为 utf-8 字符串

基(预定义的 base_id)

    public $bases = [
        2 => '01',
        3 => '012',
        4 => '0123',
        8 => '01234567',
        10 => '0123456789',
        16 => '0123456789abcdef',
        58 => '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz',
    ];