如何获取“9e316d9e-a018fdc02a8352dea61ffd1d”形式的uuid?
How to get uuid in the form of "9e316d9e-a018fdc02a8352dea61ffd1d"?
我知道如何以 uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,
的形式获取 uuid,但我需要以“9e316d9e-a018fdc02a8352dea61ffd1d”的形式获取 uuid。
我正在使用 https://github.com/satori/go.uuid
。
我试过了,但我找不到要在 Google 上搜索的项目。 (如果您知道搜索项,那么很明显)。
这是不可能的,因为根据定义,UUID 是一个 16 字节的数字。但当然,您可以生成带有子字符串和 unix 时间戳的 8 个字符长的唯一字符串。
还要小心生成更长的 UUID 并对它们进行子字符串化,因为 ID 的某些部分可能包含固定字节(例如 MAC、DCE 和 MD5 UUID 就是这种情况)和这种形式UUID 9e316d9e-a018fdc02a8352dea61ffd1d
无法保证真正独一无二。
一行即可完成:
// var u uuid.UUID
fmt.Sprintf("%x-%x", u[:4], u[4:])
游乐场example.
编辑:
由于 fmt.Sprintf
不是最有效的编码方法,您可以使用 UUID.String() 建模:
buf := make([]byte, 33)
hex.Encode(buf, u[:4])
buf[8] = '-'
hex.Encode(buf[9:], u[4:])
return string(buf)
我知道如何以 uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,
的形式获取 uuid,但我需要以“9e316d9e-a018fdc02a8352dea61ffd1d”的形式获取 uuid。
我正在使用 https://github.com/satori/go.uuid
。
我试过了,但我找不到要在 Google 上搜索的项目。 (如果您知道搜索项,那么很明显)。
这是不可能的,因为根据定义,UUID 是一个 16 字节的数字。但当然,您可以生成带有子字符串和 unix 时间戳的 8 个字符长的唯一字符串。
还要小心生成更长的 UUID 并对它们进行子字符串化,因为 ID 的某些部分可能包含固定字节(例如 MAC、DCE 和 MD5 UUID 就是这种情况)和这种形式UUID 9e316d9e-a018fdc02a8352dea61ffd1d
无法保证真正独一无二。
一行即可完成:
// var u uuid.UUID
fmt.Sprintf("%x-%x", u[:4], u[4:])
游乐场example.
编辑:
由于 fmt.Sprintf
不是最有效的编码方法,您可以使用 UUID.String() 建模:
buf := make([]byte, 33)
hex.Encode(buf, u[:4])
buf[8] = '-'
hex.Encode(buf[9:], u[4:])
return string(buf)