Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cyrildever/base62
Custom Base-62 Encoder
https://github.com/cyrildever/base62
base-62 go golang library typescript
Last synced: about 2 months ago
JSON representation
Custom Base-62 Encoder
- Host: GitHub
- URL: https://github.com/cyrildever/base62
- Owner: cyrildever
- License: mit
- Created: 2021-03-13T10:02:41.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2024-09-08T08:12:42.000Z (4 months ago)
- Last Synced: 2024-10-14T04:08:28.017Z (2 months ago)
- Topics: base-62, go, golang, library, typescript
- Language: TypeScript
- Homepage:
- Size: 775 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# base62
_Custom Base-62 Encoder_![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/cyrildever/base62)
![GitHub last commit](https://img.shields.io/github/last-commit/cyrildever/base62)
![GitHub issues](https://img.shields.io/github/issues/cyrildever/base62)
![npm](https://img.shields.io/npm/dw/bas62)
![NPM](https://img.shields.io/npm/l/base62)This repository contains the version of my encoder/decoder for Base-62 in two languages:
* [Golang](go/);
* [TypeScript](ts/).The latter could be downloaded from its NPM repo: [https://www.npmjs.com/package/base62-ts](https://www.npmjs.com/package/base62-ts).
### Motivation
I needed an efficient way to apply a Base-62 encoding/decoding algorithm working the same way in TypeScript/Javascript and in Golang environments.
_**WARNING**: Decoding any wrongful string returns an error and `0`. You shouldn't use the latter._
### Usage
Both versions use the same following dictionary:
| Value | Character | Value | Character | Value | Character | Value | Character | Value | Character |
|:-----:|:---------:|:-----:|:---------:|:-----:|:---------:|:-----:|:---------:|:-----:|:---------:|
| 0 | `0` | 13 | `d` | 26 | `q` | 39 | `D` | 52 | `Q` |
| 1 | `1` | 14 | `e` | 27 | `r` | 40 | `E` | 53 | `R` |
| 2 | `2` | 15 | `f` | 28 | `s` | 41 | `F` | 54 | `S` |
| 3 | `3` | 16 | `g` | 29 | `t` | 42 | `G` | 55 | `T` |
| 4 | `4` | 17 | `h` | 30 | `u` | 43 | `H` | 56 | `U` |
| 5 | `5` | 18 | `i` | 31 | `v` | 44 | `I` | 57 | `V` |
| 6 | `6` | 19 | `j` | 32 | `w` | 45 | `J` | 58 | `W` |
| 7 | `7` | 20 | `k` | 33 | `x` | 46 | `K` | 59 | `X` |
| 8 | `8` | 21 | `l` | 34 | `y` | 47 | `L` | 60 | `Y` |
| 9 | `9` | 22 | `m` | 35 | `z` | 48 | `M` | 61 | `Z` |
| 10 | `a` | 23 | `n` | 36 | `A` | 49 | `N` | | |
| 11 | `b` | 24 | `o` | 37 | `B` | 50 | `O` | | |
| 12 | `c` | 25 | `p` | 38 | `C` | 51 | `P` | | |In other words, they use the following base: `0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`.
For TypeScript:
```console
npm i base62-ts
``````typescript
import * as base62 from 'base62-ts'const value = 18969
const encoded = base62.encode(value)
// 4VX
console.log(encoded)const decoded = base62.decode(encoded)
console.assert(value === decoded)
```For Go:
```console
go get github.com/cyrildever/base62
``````golang
import "github.com/cyrildever/base62"value := "4VX"
decoded, err := base62.Decode(value)
// 18969
fmt.Println(decoded)encoded, err := base62.Encode(decoded)
assert.Equal(t, value, encoded)
```### License
Both versions are available under a MIT license (see [LICENSE](LICENSE)).
© 2021-2024 Cyril Dever. All rights reserved