#base #decimal #conversion #convert #numeric

base_custom

使用任意字符作为您自己的数字基,并在十进制之间进行转换

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 密码学

Download history 6/week @ 2024-04-28 8/week @ 2024-05-05 38/week @ 2024-05-12 18/week @ 2024-05-19 7/week @ 2024-05-26 16/week @ 2024-06-02 38/week @ 2024-06-09 61/week @ 2024-06-16 35/week @ 2024-06-23 115/week @ 2024-06-30 3/week @ 2024-07-07 92/week @ 2024-07-14 81/week @ 2024-07-21 53/week @ 2024-07-28 79/week @ 2024-08-04 233/week @ 2024-08-11

每月447次下载
用于3个crate(2直接使用)

MIT/Apache

20KB
263

base_custom

Build Status crates.io version License

使用任意字符作为您自己的数字基,并在十进制之间进行转换。这可以以各种方式加以利用

  • 数学:数字转换
  • 暴力排序
  • 滚动密码
  • 中等信息隐藏
  • 其他潜在用途,例如从数字中生成音乐或艺术

还有一个基于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-2.0许可证的定义,应按照上述方式双授权,不得添加任何附加条款或条件。

无运行时依赖