首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Base91,它是如何计算的?

Base91,它是如何计算的?
EN

Stack Overflow用户
提问于 2017-10-27 15:05:42
回答 1查看 4.7K关注 0票数 10

我一直在网上寻找basE91是如何计算的。我已经找到了一些资源,比如这一个,它指定了用于特定值的字符,但我没有找到如何获得该值的方法。

我尝试将输入值转换为二进制值,并接受6位和7位的块,但这些都不起作用,并且得到了不正确的输出。我不想让代码为我这样做,因为我要自己写,我只想知道将字符串编码到basE91所需的过程。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-28 15:19:45

首先,您需要将输入看作一个比特流。

然后,从流中读取13位,并从中形成一个整数值。如果该整数的值低于或等于88,则读取一个额外的位,并将其放入整数的第14位(最低位为1)。这个整数的最大值(我们称之为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是足够大的数目)。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46978133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档