甲通用唯一标识符(UUID)是一个128位的值,它是16个字节。对于人类可读的显示,许多系统使用规范格式,该规范格式使用带有插入的连字符的十六进制文本,例如:
123e4567-e89b-12d3-a456-426655440000
这有长度16*2 + 4 = 36
。您可以选择省略为您提供的连字符:
fmt.Printf("%x\n", uuid)
fmt.Println(hex.EncodeToString(uuid))
// Output: 32 chars
123e4567e89b12d3a456426655440000
123e4567e89b12d3a456426655440000
您可以选择使用base32编码(与使用1个符号编码4位的十六进制编码相反):
fmt.Println(base32.StdEncoding.EncodeToString(uuid))
// Output: 26 chars
CI7EKZ7ITMJNHJCWIJTFKRAAAA======
=
传输时修剪尾随标志,因此始终为26个字符。请注意,您必须先附加,"======"
然后才能使用解码字符串base32.StdEncoding.DecodeString()
。
如果这对于您来说仍然太长,则可以使用base64编码(使用1个符号对6位进行编码):
fmt.Println(base64.RawURLEncoding.EncodeToString(uuid))
// Output: 22 chars
Ej5FZ-ibEtOkVkJmVUQAAA
请注意,base64.RawURLEncoding
生成的base64字符串(不带填充)可安全地包含在URL中,因为符号表中的2个额外字符(位于之外[0-9a-zA-Z]
)为-
和_
,两个都可以安全地包含在URL中。
对于您来说很不幸,base64字符串除之外可能还包含2个额外的字符[0-9a-zA-Z]
。继续阅读。