您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Go中以短字符串形式输出UUID

在Go中以短字符串形式输出UUID

通用唯一标识符(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]。继续阅读。

Go 2022/1/1 18:16:05 有456人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶