ierusalim / baseconvert
通过任意精度的十进制表示,将任何用户定义的字符集字符串进行转换
0.4.1
2019-06-09 14:41 UTC
Requires
- php: >=5.3
- ext-bcmath: *
Requires (Dev)
- phpunit/phpunit: 4.8.*
README
通过任意精度的十进制表示,将任何用户定义的字符集字符串进行转换。
安装
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', ];