5 个稳定版本
1.1.2 | 2020年11月26日 |
---|---|
1.0.1 | 2020年3月29日 |
#94 in 值格式化
775 每月下载量
在 2 个Crates中使用(通过 file_shred)
76KB
2K SLoC
number2name
这是一个简单的Rust库,用于将索引转换为尽可能简短的名字。
它可以转换索引到字符串以及反向转换,支持不同的字符集。
示例
从数字到文本
let charset = Charset::case_insensitive("abc");
let text = charset.encode(13);
assert_eq!(text, "aab");
从文本到数字
let nr = charset.decode("aab")?;
assert_eq!(nr, 13);
安装
Cargo.toml
:
number2name = "^1.0.1"
编码
对于字符集 'abc',序列为:
0 a
1 b
2 c
3 aa
4 ab
...
10 cb
11 cc
12 aaa
13 aab
注意,这略短于去除前导字符的base3:
0 a (or '')
1 b
2 c
3 ba
4 bb
...
11 bac
12 bba
13 bbb
14 bbc
字符集
您可以使用 number2name::Charset
容易地使用自己的字符集。
或者使用内置的其中一个(请确保从该库导入,例如 use ::number2name::BASE64
)
-
HEX(不区分大小写)/ HEXLOWERCASE(区分大小写)
0123456789abcdef
-
BASE32(不区分大小写)/ BASE32LOWERCASE(区分大小写)
ABCDEFGHIJKLMNOPQRSTUVWXYZ234567
-
BASE32HUMAN
abcdefghjkmnpqrstuvwxyz23456789
-
BASE32CROCKFORD
0123456789ABCDEFGHJKMNPQRSTVWXYZ
-
BASE32SCNY
一二三四五六七八九十鼠牛虎兔龍蛇马羊猴鸡狗猪凤北东南西中左右上下
-
BASE32HEX
0123456789ABCDEFGHIJKLMNOPQRSTUV
-
BASE64(区分大小写)
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
-
BASE64URL(区分大小写)
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_
整型类型
- 默认方法适用于64位无符号整数。
- 具体无符号类型作为例如
charset.encode_u128(...)
提供。 - 有符号整型类型作为例如
charset.encode_i32(...)
提供。
二进制
该项目主要设计为一个库,但也附带两个二进制文件:number2name
和name2number
。
这些二进制文件可以分别接受一系列数字或字符串,并将它们转换为匹配的字符串或数字。
您可以通过指定字符集(使用-c
,默认为可读的base32)来指定。您可以使用有符号数字(使用-s
)。
Docker
使用Docker运行CLI工具
docker run --rm -it mverleg/number2name /number2name 8992605869540
docker run --rm -it mverleg/number2name /name2number "hey_there"
要自己构建镜像(而不是从Dockerhub下载),请克隆GitHub项目并运行
docker build -t mverleg/number2name .
这也是运行测试和lints、验证您的版本是否正确的最简单方法。
迷你版本
如果文件大小(或编译时间)很重要,您可以使用--no-default-features
不使用任何依赖项来构建此库。这意味着内置的字符集不可用,您需要自己构建(如上所述)。您也不能这样使用二进制文件,只能使用库。
注意事项
-
通常运行速度相当快,但如果性能至关重要
- 重用字符集实例(内置的实例是自动的)
- 尽可能使用区分大小写的字符集
依赖项
~0–440KB