我一直在网上寻找basE91是如何计算的。我已经找到了一些资源,比如这一个,它指定了用于特定值的字符,但我没有找到如何获得该值的方法。
我尝试将输入值转换为二进制值,并接受6位和7位的块,但这些都不起作用,并且得到了不正确的输出。我不想让代码为我这样做,因为我要自己写,我只想知道将字符串编码到basE91所需的过程。
发布于 2017-10-28 15:19:45
首先,您需要将输入看作一个比特流。
然后,从流中读取13位,并从中形成一个整数值。如果该整数的值低于或等于88,则读取一个额外的位,并将其放入整数的第14位(最低位为1)。这个整数的最大值(我们称之为v)是: 8192+88 = 8280。
然后将v分为两个指标:i0 = v%91、i1 = v/91。然后使用一个91元素字符表,并输出两个字符:table[i0],table[i1].
(现在您可以看到88的原因:对于最大值(8280),i0和i1都变成90)。
因此,这个过程比base64更复杂,但更节省空间。此外,与base64不同,输出的大小与输入字节有一定的关系。N长序列0x00将比N长度序列0xff短(其中N是足够大的数目)。
https://stackoverflow.com/questions/46978133
复制相似问题