15个版本
使用旧的Rust 2015
0.2.0 | 2018年12月7日 |
---|---|
0.1.13 | 2017年12月9日 |
0.1.12 | 2017年10月29日 |
0.1.10 | 2017年9月22日 |
0.1.6 | 2017年6月24日 |
#654 in 密码学
每月447次下载
用于3个crate(2直接使用)
20KB
263 行
base_custom
使用任意字符作为您自己的数字基,并在十进制之间进行转换。这可以以各种方式加以利用
- 数学:数字转换
- 暴力排序
- 滚动密码
- 中等信息隐藏
- 其他潜在用途,例如从数字中生成音乐或艺术
还有一个基于Ruby和Crystal的该库的实现。
安装
将以下内容添加到您的Cargo.toml文件中
[dependencies]
base_custom = "^0.2"
要使用它,请添加
extern crate base_custom;
use base_custom::BaseCustom;
到您的文件。
使用方法
// Binary with no delimiter
let base2 = BaseCustom::<char>::new("01".chars().collect());
assert_eq!(base2.decimal("00001"), 1_u64);
assert_eq!(base2.decimal("100110101"), 309_u64);
assert_eq!(base2.gen(340), "101010100");
assert_eq!(base2.gen(0xF45), "111101000101");
assert_eq!(base2.gen(0b111), "111");
// Trinary with no delimiter
let base3 = BaseCustom::<char>::new("ABC".chars().collect());
assert_eq!(base3.decimal("ABC"), 5);
assert_eq!(base3.gen(123), "BBBCA");
// Custom base like Musical Chords and a space delimiter
let base_music = BaseCustom::<String>::new("A A# B C C# D D# E F F# G G#", Some(' '));
assert_eq!(base_music.decimal("F F# B D# D A# D# F# "), 314159265);
assert_eq!(base_music.gen(314159265), "F F# B D# D A# D# F# ");
使用BaseCustom::<String>::new
时,第二个参数必须是Option<char>
,以选择您的可选分隔符。
基准测试
提供了针对各种用途和实现的基准测试。BaseCustom<char>
是最有效的实现。
许可证
根据以下任一许可证授权
- Apache License,版本2.0,(LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT或http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确说明,否则您提交的任何有意包含在工作中的贡献,根据Apache-2.0许可证的定义,应按照上述方式双授权,不得添加任何附加条款或条件。