【问题标题】:Are there multiple Base62 Encoding Algorithm?是否有多种 Base62 编码算法?
【发布时间】:2021-12-18 06:44:58
【问题描述】:

我正在观看有关微型 url 系统设计的教程,并阅读了 base62 编码以避免冲突。他们说要使用计数器,并用base62对其进行编码。现在这是有道理的,但是看看一些在线 base62 编码器,如果微小的 url 限制字符说只有 7 个字符,如果某些编码器生成超过 7 个字符。 是否有多种类型的 base62 编码?例如这两个网站,对于 1000000 的相同输入给出 2 个不同的结果

【问题讨论】:

  • 你能解释一下base62 encoding是如何避免碰撞的吗?
  • 基本上他们提到使用一个计数器然后对该计数器进行编码..所以不会发生冲突,这是有道理的..但是当我在网上搜索 base62 编码器时,一些编码会给出 10+ 个字符结果。所以如果tinyurl只有8个字符,这意味着我们只能取第一个8个字符,这最终会再次引起冲突。但是一些 base62 编码只生成 4 或 5 个字符,这就是为什么我试图理解 base62 编码实现基本上取决于开发人员?
  • 你有一个二进制代码,你转换成一个数字,你把这个数字转换成一个(例如)62进制,然后你选择62个符号来显示这个62个数字的数字。因此长度仅取决于初始字符串(base62 不是散列算法)。最大公分母(例如,如果您使用字节编码,则为 8)将帮助您将数据拆分为可管理的数字(但是您会看到 62 不是一个好的选择,而是在符号有限的选定介质上)。像 base64:不同的协议可能使用不同的符号/实现细节。

标签: encoding system-design base62


【解决方案1】:

Base62Base64 编码用于将二进制数据表示为文本。

我不确定base62 有什么实际用途。另一方面,base64 可以将 6 位表示为一个字符,您的样本值 1,000,000(十六进制 0xF4240)使用 20 位,因此它适合 4 个base64 字符。

您的第一个示例使用纯文本1000000,它有 7 个字符,每个 8 位。或者总共 56 个字符,这需要 10 个 base64 字符。

base62 将获得相似的数字,但编码必须非常重要,因为您不能简单地将数据切成 6 位片段。

上面的 Wiki 链接提到了多个变体,因此您必须在编码器和解码器之间达成一致 - 使用哪一个。但这不是您在两个示例中看到的问题。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多