GUID是以HEX为基础显示的大随机数。我想以更短的格式显示这个数字,假设基于所有字母和数字。那是36个基础。
让我们说:2f1e4fc0-81fd-11da-9156-00036a0f876a
将变为3jEl9x6eZi
。
.Net中有没有“准备好”的算法?
它需要是双向的。
使用Base64 编辑是更好的解决方案。唯一的问题是Base64包含/
char,它与URI中使用的不兼容。
答案 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)。