-
Notifications
You must be signed in to change notification settings - Fork 1
/
uuid.go
37 lines (31 loc) · 847 Bytes
/
uuid.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package utils
import (
"encoding/binary"
"github.com/google/uuid"
"strings"
)
func UUID() string {
return strings.ReplaceAll(uuid.New().String(), "-", "")
}
func TinyUUID() (rs string) {
bs, _ := uuid.New().MarshalBinary()
u641 := binary.LittleEndian.Uint64(bs[:8])
u642 := binary.LittleEndian.Uint64(bs[8:])
s1 := toString(u641)
s2 := toString(u642)
return s1 + s2
}
func toString(i uint64) string {
if i < cl {
return cs[i]
} else {
return toString(i/cl) + cs[i%cl]
}
}
const cl = 63
var cs = []string{"q", "w", "e", "r", "t", "y", "u", "i", "o",
"p", "a", "s", "d", "f", "g", "h", "j", "k", "l", "z", "x",
"c", "v", "b", "n", "m", "1", "2", "3", "4", "5", "6", "7",
"8", "9", "0", "_", "Q", "W", "E", "R", "T", "Y", "U", "I",
"O", "P", "A", "S", "D", "F", "G", "H", "J", "K", "L", "Z",
"X", "C", "V", "B", "N", "M"}