【发布时间】: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