HomeToolsAbout a20k

Base62

Base62

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> }
© VincentVanKoh