【发布时间】:2010-11-24 08:51:08
【问题描述】:
在我的 Web 应用程序中,一个模型使用由某些 UUID 工具生成的标识符。由于我希望该标识符成为 URL 的一部分,因此我正在研究缩短该 UUID 字符串的方法。由于它目前是十六进制格式,我想以某种方式将其转换为 ASCII。因为它应该只包含普通字符和数字([\d\w]+),所以正常的十六进制到 ASCII 转换似乎不起作用(丑陋的字符)。 你知道一些很好的算法或工具(Ruby)来做到这一点吗?
【问题讨论】:
-
有趣的事实:base64 编码的 uuid 长度为 22 个字符 + 两个填充字符 ('==')。 uuid 的标准十六进制表示为 32 个字符长 + 4 个“-”字符。
-
你可以用tools.ietf.org/html/rfc1924修改过的base85编码再保存两个字符(IPv6地址也是128位,方便);它的字符集并不完全是 URL 安全的,但我认为如果你真的想要,你可以修复它。