以36个字母格式显示GUID

时间:2010-02-14 00:34:16

标签: c# .net guid base64

GUID是以HEX为基础显示的大随机数。我想以更短的格式显示这个数字,假设基于所有字母和数字。那是36个基础。

让我们说:2f1e4fc0-81fd-11da-9156-00036a0f876a将变为3jEl9x6eZi

.Net中有没有“准备好”的算法?

它需要是双向的。

使用Base64

编辑是更好的解决方案。唯一的问题是Base64包含/ char,它与URI中使用的不兼容。

5 个答案:

答案 0 :(得分:13)

答案 1 :(得分:8)

这种转换没有内置任何东西。内置的内容是使用base 64编码:

string base64 = Convert.ToBase64String(theGuid.ToByteArray())

答案 2 :(得分:2)

你提出它是不可能的。你不得不丢失信息:

>>> 16 ** len('2f1e4fc081fd11da915600036a0f876a')
340282366920938463463374607431768211456
>>> 36 ** len('3jEl9x6eZi')
3656158440062976

您需要更多基数36位才能涵盖所有可能的值。为什么不直接使用base 64?结果会更短(我假设这是目的),并且在.NET中有一个标准的解决方案。

答案 3 :(得分:1)

Base64是我使用的,this将解决问题==和/和+

答案 4 :(得分:0)

我认为最接近的是Base36但是它不适用于GIUD类型(只有Int16,Int32或Int64)。