Crates.io | base_any |
lib.rs | base_any |
version | 0.1.0 |
source | src |
created_at | 2024-08-29 06:15:05.217946 |
updated_at | 2024-08-29 06:15:05.217946 |
description | 通用的 base 系列编解码。中文编码。 |
homepage | |
repository | https://github.com/zeng-y-l/base_any |
max_upload_size | |
id | 1355696 |
size | 73,188 |
通用的 base 系列编解码。中文编码。
use base_any::tables::BASE1024;
assert_eq!(BASE1024.encode_str("你好世界".bytes()), "阮诮珍据晚韩扶累精悲");
assert_eq!(BASE1024.decode_vec("阮诮珍据晚韩扶累精悲".chars()).unwrap(), "你好世界".as_bytes());
# 假设可执行文件为 ./base_any
echo -n 你好世界 | ./base_any en BASE1024 # 阮诮珍据晚韩扶累精悲
echo -n 阮诮珍据晚韩扶累精悲 | ./base_any de BASE1024 # 你好世界
./base_any stat # 输出统计表格
理论支持 base2 到 base32768 的编码方案。支持 Unicode 字符。
要求每字符对应 1-15 位。不支持 base91 这种编码。
每字符对应多于一字节(base256 以上)的编码方案,有结尾字符集。 输入数据结尾若不够比一字节多,则使用结尾字符集编码。
在 table
文件夹中配置方案,编译时自动生成常量。
我独创中文编码如下。
base8192
正文字符集:
结尾字符集:前三十二个平假名。
优势:
XID_Continue
char::is_alphanumeric
base1024
正文字符集:
结尾字符集:前四个注音符号声母(ㄅㄆㄇㄈ)。
优势:同上,且
XID_Start
base256
字符集:《千字文》前 256 个不重复的字。
优势:同上,且
下表由 ./base_any stat
生成。
Name | Bits | Range | UTF-8 Effi | UTF-16 Effi |
---|---|---|---|---|
BASE1024 | 10 | BMP | 41.67% | 62.50% |
BASE256 | 8 | BMP | 33.33% | 50.00% |
BASE32 | 5 | ASCII | 62.50% | 31.25% |
BASE32HEX | 5 | ASCII | 62.50% | 31.25% |
BASE64 | 6 | ASCII | 75.00% | 37.50% |
BASE64URL | 6 | ASCII | 75.00% | 37.50% |
BASE8192 | 13 | Unicode | 54.01% | 79.35% |
GUA64 | 6 | BMP | 25.00% | 37.50% |
GUA8 | 3 | BMP | 12.50% | 18.75% |
HEX | 4 | ASCII | 50.00% | 25.00% |