在 Java 中将 UUID 编码为 Base62(而非 Base64)
Encoding UUID to Base62 (not Base64) in Java
我正在尝试缩短要嵌入 URL 中的 UUID 值(作为 UUID 而不是字符串存储在数据库中)。我知道 URL 的 Base64,但我想看看我是否可以在没有破折号和下划线字符的情况下实现它。
所以我想将 UUID 转换为 base62。经过大量谷歌搜索后,我发现:
没有这方面的标准(类似于 RFC2045),对吗?
最重要的是没有合适的实现。我发现了很多关于如何做到这一点的片段,但有一些注意 "this is a naive implementation" 之类的。是否有正确的实现(我不介意映射应该如何完成的确切解释,只要它正确完成)?
Apache Commons Codec 和 Guava 中有一些基础 类 被扩展为 Base32 和 Base64,但我发现扩展它为 Base62 并不容易。甚至可以做到吗(考虑到映射根本不同这一事实)?
谢谢
您可能想试试这个库:https://github.com/Devskiller/friendly-id
The FriendlyID library converts a given UUID (with 36 characters) to a URL-friendly ID (a "FriendlyID") which is based on Base62 (with a maximum of 22 characters), as in the example below:
UUID Friendly ID
c3587ec5-0976-497f-8374-61e0c2ea3da5 -> 5wbwf6yUxVBcr48AMbz9cb
| |
36 characters 22 characters or less
In addition, this library allows to:
- convert from a FriendlyID back to the original UUID; and
- create a new, random FriendlyID
编解码器 Base62Codec
可以有效地将 UUID 编码为 base-62。
// Returns a base-62 string
// uuid::: 01234567-89AB-4DEF-A123-456789ABCDEF
// base62: 0296tiiBY28FKCYq1PVSGd
String string = Base62Codec.INSTANCE.encode(uuid);
同一package of uuid-creator.
中还有其他编码的编解码器
我正在尝试缩短要嵌入 URL 中的 UUID 值(作为 UUID 而不是字符串存储在数据库中)。我知道 URL 的 Base64,但我想看看我是否可以在没有破折号和下划线字符的情况下实现它。 所以我想将 UUID 转换为 base62。经过大量谷歌搜索后,我发现:
没有这方面的标准(类似于 RFC2045),对吗?
最重要的是没有合适的实现。我发现了很多关于如何做到这一点的片段,但有一些注意 "this is a naive implementation" 之类的。是否有正确的实现(我不介意映射应该如何完成的确切解释,只要它正确完成)?
Apache Commons Codec 和 Guava 中有一些基础 类 被扩展为 Base32 和 Base64,但我发现扩展它为 Base62 并不容易。甚至可以做到吗(考虑到映射根本不同这一事实)?
谢谢
您可能想试试这个库:https://github.com/Devskiller/friendly-id
The FriendlyID library converts a given UUID (with 36 characters) to a URL-friendly ID (a "FriendlyID") which is based on Base62 (with a maximum of 22 characters), as in the example below:
UUID Friendly ID c3587ec5-0976-497f-8374-61e0c2ea3da5 -> 5wbwf6yUxVBcr48AMbz9cb | | 36 characters 22 characters or less
In addition, this library allows to:
- convert from a FriendlyID back to the original UUID; and
- create a new, random FriendlyID
编解码器 Base62Codec
可以有效地将 UUID 编码为 base-62。
// Returns a base-62 string
// uuid::: 01234567-89AB-4DEF-A123-456789ABCDEF
// base62: 0296tiiBY28FKCYq1PVSGd
String string = Base62Codec.INSTANCE.encode(uuid);
同一package of uuid-creator.
中还有其他编码的编解码器