使UUID更短(十六进制到ASCII转换)

时间:2010-11-24 00:41:36

标签: ruby hex uuid

在我的Web应用程序中,一个模型使用由某个UUID工具生成的标识符。由于我希望该标识符成为URL的一部分,因此我正在研究缩短该UUID字符串的方法。由于它目前是十六进制格式,我想过以某种方式将其转换为ASCII。因为它之后应该只包含普通字符和数字([\ d \ w] +),正常的十六进制到ASCII转换似乎不起作用(丑陋的字符)。 你知道一些不错的算法或工具(Ruby)吗?

1 个答案:

答案 0 :(得分:4)

UUID最后是一个128位二进制数。如果你把它表示为16个未编码的字节,就没有办法避免“丑陋的字符”。您可能想要做的是从十六进制解码,然后使用base64对其进行编码。请注意,base64编码使用字符+ / =以及A-Za-z0-9,您需要进行一些后处理(我建议s/+/-/g; s/\//_/g; s/==$// - base64ed UUID将始终以两个等号结束)