num_base 0.4.2

Crate for manipulating with numbers (integers) in different bases.
Documentation
use num_base::{ Based, Alphabet };

#[test]
fn conversion_test() {
    let c1 = Based::new("101", 10).to(2).unwrap();
    assert_eq!(c1.val, "1100101");
    assert_eq!(c1.base, 2);

    let c2 = Based::new("1100101", 2).to(10).unwrap();
    assert_eq!(c2.val, "101");
    assert_eq!(c2.base, 10);

    let c3 = Based::new("1210", 3).to(2).unwrap();
    assert_eq!(c3.val, "110000");
    assert_eq!(c3.base, 2);

    let c4 = Based::new_abc("bof", 16, "abcdefghijklmnopqrstuvwxyz").to(8).unwrap();
    assert_eq!(c4.val, "hef");
    assert_eq!(c4.base, 8);

    let c5 = Based::new_abc("bababa", 2, "abcde").to(3).unwrap().convert_to_abc(Alphabet::Default).unwrap();
    assert_eq!(c5.val, "1120");
    assert_eq!(c5.base, 3);
}

#[cfg(feature = "ops")]
#[test]
fn ops() {
    assert_eq!((Based::new("101", 10) + Based::new("1100101", 2)).val, "202");
    assert_eq!((Based::new("101", 10) - Based::new("1100100", 2)).val, "1");
    assert_eq!((Based::new("101", 10) * Based::new("10", 2)).val, "202");
    assert_eq!((Based::new("100", 10) / Based::new("10", 2)).val, "50");
    assert_eq!((Based::new("101", 10) % Based::new("10", 2)).val, "1");
}