我一直在网上查找 basE91 是如何计算的。我找到了诸如this one它指定了用于特定值的字符,但我没有找到如何获取该值的方法。
我尝试将输入值更改为二进制并获取 6 位和 7 位的块,但这些不起作用,并且我得到了不正确的输出。我不想要为我执行此操作的代码,因为我自己编写该代码,我只想知道将字符串编码为 basE91 所需的过程。
首先,您需要将输入视为比特流。
然后,从流中读取 13 位,并从中形成一个整数值。如果该整数的值小于或等于88,则再读取一位,并将其放入该整数的第14位(最低位为第1位)。这个整数(我们称之为v
) 最大值为:8192+88 = 8280。
然后分开v
分为两个指数:i0 = v%91
, i1 = v/91
。然后使用91个元素的字符表,输出两个字符:table[i0]
, table[i1]
.
(现在你可以看到 88 的原因了:对于最大值(8280),两者i0
and i1
变成90)
所以这个过程比base64更复杂,但更节省空间。此外,与 base64 不同,输出的大小有点依赖于输入字节。 N 长度的 0x00 序列将比 N 长度的 0xff 序列短(其中 N 是足够大的数字)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)