Language agnostic 给定GUID,如果我缩短它。。我们能假设它仍然是独一无二的吗?

Language agnostic 给定GUID,如果我缩短它。。我们能假设它仍然是独一无二的吗?,language-agnostic,guid,Language Agnostic,Guid,考虑到GUID的是(或多或少)唯一的,如果我们缩短它: 它基本上只是将GUID转换为base64字符串并将其缩短一点。 它采用如下标准GUID: c9a646d3-9c61-4cb7-bfcd-ee2522c8f633 并将其转换为更小的字符串: 00amyWGct0y_ze4lIsj2Mw 我现在可以假设缩短的guid与以前的(正常)形式一样唯一吗?这是一个可逆的转换-您可以使用一个反向函数返回原始guid。这意味着它完全是“独一无二的”;每个GUID都有不同的“缩短GUID”。encode函

考虑到
GUID的
是(或多或少)唯一的,如果我们缩短它:

它基本上只是将GUID转换为base64字符串并将其缩短一点。 它采用如下标准GUID:

c9a646d3-9c61-4cb7-bfcd-ee2522c8f633

并将其转换为更小的字符串:

00amyWGct0y_ze4lIsj2Mw


我现在可以假设缩短的guid与以前的(正常)形式一样唯一吗?

这是一个可逆的转换-您可以使用一个反向函数返回原始guid。这意味着它完全是“独一无二的”;每个GUID都有不同的“缩短GUID”。encode函数中的最后一步是删除base64填充字符
==
。这不会丢失任何信息,因为每个GUID的长度相同,因此每个GUID都有相同的填充。解码函数在传递到base64解码器之前重新追加
“==”

er。你是说这是独一无二的,那么。。因为当我们反转这个时只有一个答案?我要说的是,这只是相同信息的另一种表示。假设它声明
再次将字符串解码回原始GUID
,我想是的-base64比hex更简洁,并且base64尾部被修剪。显然,这仅适用于表示层-在.Net中将Guid存储为22个字符(44个字节)而不是本机的16个字节可能不是一个好主意。