Base91,它是如何计算的?

mil*_*ell 7 algorithm encoding base base91

我一直在网上查找basE91的计算方法.我发现资源,比如这一个指定用于特定值的字符,但无处有我发现我如何获得该值.

我已经尝试将输入值更改为二进制并采用6位和7位的块,但这些不起作用,我得到错误的输出.我不希望代码能为我这样做,因为我自己编写代码,我只想知道将字符串编码为basE91所需的过程.

gez*_*eza 8

首先,您需要将输入视为位流.

然后,从流中读取13位,并从中形成一个整数值.如果该整数的值小于或等于88,则读取一个附加位,并将其放入整数的第14位(最低位为1).这个整数(我们称之为v)最大值是:8192 + 88 = 8280.

然后分成v两个指数:i0 = v%91,i1 = v/91.然后使用91个元素的字符表,并输出两个字符:table[i0],table[i1].

(现在你可以看到88的原因:为最大值(8280),两者i0i1成为90)

所以这个过程比base64更复杂,但更节省空间.此外,与base64不同,输出的大小有点依赖于输入字节.N长度序列0x00将短于N长度序列0xff(其中N是足够大的数字).