【发布时间】:2015-09-26 16:15:31
【问题描述】:
我有一个数据库,其中的行由 32 个字符的十六进制 GUID(存储为二进制)标识。我想知道如何将这些字符串动态压缩成更短但仍然对用户友好的表示形式……非常适合在共享 URL 中使用。因为它们是 32 个十六进制字符(目前不区分大小写)......我尝试使用 base64 编码来访问二进制表示。这使它们从 32 个字符增加到 22 个字符,但我不确定是否有更好的通用而简单的方法。
我也在考虑发挥创意,因为现在即使是表情符号在技术上也是 URL 安全的。不过,不确定这是否是个好主意。
以前有没有人考虑过这个问题的跨平台解决方案?完全使用较小的子集生成新 ID 会更好吗?
【问题讨论】:
-
嗯,你有一个 16 字节的硬下限,因为每个十六进制数字描述半个字节。 22 个字符对我来说似乎并不比 16 个更糟糕,所以我会选择 base64。
-
我觉得使用表情符号是一个非常糟糕的想法。 (1) 人们仍然希望 URL 是或至少看起来像“纯文本”,并且能够从纯文本文件中复制和粘贴它们; (2) 您可能会遇到各种浏览器错误和文件编码错误; (3) 你可能有像我一样的其他用户,他们只是觉得 emoji 很烦人。
-
我同意 emoji 听起来很糟糕,但我对用这个获得创意的想法很感兴趣。 :)
-
Emoji 会让事情变得更糟,因为它们在 UTF-8 中每个占用四个字节。
标签: algorithm hash compression hex guid