Source: https://ucarion.com/go-base62
The stdlib
’s math/big
package gives you a base62
implementation out of the box.
You don’t need an external dependency for it, assuming you can hold the entire base62
dataset in memory.
This is good enough for things like parsing/serializing UUIDs
in a more compact format:
package main import ( "fmt" "math/big" ) type UUID = [16]byte func toBase62(uuid UUID) string { var i big.Int i.SetBytes(uuid[:]) return i.Text(62) } func parseBase62(s string) (UUID, error) { var i big.Int _, ok := i.SetString(s, 62) if !ok { return UUID{}, fmt.Errorf("cannot parse base62: %q", s) } var uuid UUID copy(uuid[:], i.Bytes()) return uuid, nil } func main() { fmt.Println(toBase62(UUID{0xFF, 0xFF, 0, 0, 0, 0, 0, 0, 0xFF, 0xFF, 0, 0, 0, 0, 0, 1})) fmt.Println(parseBase62("7N3zSy9F5jGaYc4BZR44Sd")) // Output: // 7N3zSy9F5jGaYc4BZR44Sd // [255 255 0 0 0 0 0 0 255 255 0 0 0 0 0 1] <nil> }