• 编码类型:
  • 字符编码:
编码表

说明

此工具实现 Base16、Base32、Base58、Base62、Base85、Base91 进制的编码与解码,并支持自定义编码表。
Base16 编码表:0123456789ABCDEF
Base32 编码表:ABCDEFGHIJKLMNOPQRSTUVWXYZ234567
       Base32 使用了 ASCII 编码中可打印的 32 个字符(大写字母A~Z和数字2~7)对任意字节数据进行编码。 Base32 将串起来的二进制数据按照 5 个二进制位分为一组,由于传输数据的单位是字节(即 8 个二进制位),所以分割之前的二进制位数是 40 的倍数(40 是 5 和 8 的最小公倍数)。 如果不足 40 位,则在编码后数据补充"=",一个"="相当于一个组(5 个二进制位),编码后的数据长度是原先的 8/5 倍。
      Base32 编码过程,首先将数据转换成二进制串,按照五位一组进行分割。 如果数据的位数不是 5 的整数倍,需要在末尾填充 0 直到能够整除 5,其次将每组五位二进制数转换为对应的十进制数,然后查表得到对应的字符。
      Base32 编码示例,比如字符串 ABC,对应的二进制序列为 01000001 01000010 01000011, 按 5 位分组得到 01000 00101 00001 00100 0011,最后 1 组 0011 不足 5 位,补 0,变成 01000 00101 00001 00100 00110, 转成十进制数 8、5、1、4、6,查表得到 IFBEG。
Base58 编码表:123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
      Base58 编码去掉了一些容易混淆的数字和字母:0(数字0)、O(o的大写字母)、l( L的小写字母)、I(i的大写字母)。 Base64 采用直接切割 bit 的方法(8 ➝ 6),由于 256 不能被 58 整除,Base58 采用大数进制转换,效率更低,使用场景更少。 一个 ASCII 字节可用 8 位二进制表示可写成 log₂256=8,Base58 最多可用 log₂58≈5.858 位表示,因此经过 Base58 编码后的长度是原始数据长度的 8/5.858≈1.37 倍。 Base58 编码将二进制数据看作一个大整数,然后将这个大整数不断除以 58,并记录余数,这些余数对应于 Base58 字符集中的字符。
      Base58 编码示例,比如字符串 ABC,对应的二进制序列为 01000001 01000010 01000011,转成整数为 4276803,然后循环对 58 求余数, (4276803/58=73737,4276803%58=57), (73737/58=1271,73737%58=19), (1271/58=21,1271%58=53), (21/58=0,21%58=21),反转余数顺序,得到 21、53、19、57,查表得到 NvLz。
Base62 编码表:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Base64 编码表:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
第 65 个字符是填充字符,如果没有,默认就是 “=”。
Base85 编码表:!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu
Base91 编码表:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!#$%&()*+,./:;<=>?@[]^_`{|}~"

0 条用户评论

0 / 300