Crates.io | number2name |
lib.rs | number2name |
version | 1.1.2 |
source | src |
created_at | 2020-03-29 12:42:06.146254 |
updated_at | 2020-11-26 19:33:54.511089 |
description | Simple Rust library to convert an index to a name that is as short as possible. |
homepage | https://github.com/mverleg/number2name |
repository | https://github.com/mverleg/number2name |
max_upload_size | |
id | 224055 |
size | 97,238 |
This is a simple Rust library to convert an index to a name that is as short as possible.
It can convert from index to string and back, for different character sets.
From number to text:
let charset = Charset::case_insensitive("abc");
let text = charset.encode(13);
assert_eq!(text, "aab");
From text to number:
let nr = charset.decode("aab")?;
assert_eq!(nr, 13);
Cargo.toml
:
number2name = "^1.0.1"
For a character set 'abc', the series is::
0 a
1 b
2 c
3 aa
4 ab
...
10 cb
11 cc
12 aaa
13 aab
Note that this is slightly shorter than base3 with leading characters stripped::
0 a (or '')
1 b
2 c
3 ba
4 bb
...
11 bac
12 bba
13 bbb
14 bbc
You can easily use your own character sets using number2name::Charset
.
Or use one of the built-in ones (make sure to import from this library, e.g. use ::number2name::BASE64
):
HEX (case-insensitive) / HEXLOWERCASE (case-sensitive)
0123456789abcdef
BASE32 (case-insensitive) / BASE32LOWERCASE (case-sensitive)
ABCDEFGHIJKLMNOPQRSTUVWXYZ234567
BASE32HUMAN
abcdefghjkmnpqrstuvwxyz23456789
BASE32CROCKFORD
0123456789ABCDEFGHJKMNPQRSTVWXYZ
BASE32SCNY
一二三四五六七八九十鼠牛虎兔龍蛇马羊猴鸡狗猪凤北东南西中左右上下
BASE32HEX
0123456789ABCDEFGHIJKLMNOPQRSTUV
BASE64 (case-sensitive)
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
BASE64URL (case-sensitive)
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_
charset.encode_u128(...)
.charset.encode_i32(...)
.While primarily intended as a library, this project also comes with two binaries: number2name
and name2number
.
These can be given a series of numbers or strings respectively, and convert them in the matching strings or numbers.
You can specify a charset (with -c
, default is base32 human readable). You can use signed numbers (with -s
).
Run the CLI utils with Docker:
docker run --rm -it mverleg/number2name /number2name 8992605869540
docker run --rm -it mverleg/number2name /name2number "hey_there"
To build the image yourself (instead of downloading from Dockerhub), clone the Github project and run:
docker build -t mverleg/number2name .
This is also the easiest way to run the tests and lints, to verify that your version is okay.
If filesize (or compile time) is important, you can build this libary without any dependencies using at all, using --no-default-features
. This means the built-in charsets are not available, you will need to construct your own (described above). You also can't use the binaries this way, only the library.
It's generally pretty fast, but if performance is critical: