小编典典

Base91,如何计算?

algorithm

我一直在网上寻找basE91的计算方法。我已经找到了诸如此类的资源,资源指定了用于特定值的字符,但是我从没有地方找到如何获得该值。

我尝试将输入值更改为二进制,并同时获取6位和7位的块,但是它们不起作用,并且得到错误的输出。我不想自己编写自己的代码,只想知道将字符串编码为basE91所需的过程。


阅读 574

收藏
2020-07-28

共1个答案

小编典典

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

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

然后分为v两个索引:i0 = v%91i1 = v/91。然后使用91个元素的字符表,并输出两个字符:table[i0]table[i1]

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

因此,此过程比base64更复杂,但空间效率更高。此外,与base64不同,输出的大小取决于输入字节。N长度序列0x00将短于N长度序列0xff(其中N是足够大的数字)。

2020-07-28