[![Latest Version](https://img.shields.io/crates/v/radix_fmt.svg)](https://crates.io/crates/radix_fmt)
[![Documentation](https://img.shields.io/badge/api-rustdoc-purple.svg)](https://docs.rs/radix_fmt)
This crate adds a tool to format a number in an arbitrary base from 2 to 36.
This is a light crate, without any dependency.
For primitive signed integers (`i8` to `i128`, and `isize`), negative
values are formatted as the two’s complement representation.
There is also one specific function for each radix that does not
already exists in the standard library, *e.g.* [`radix_3`](fn.radix_3.html)
to format a number in base 3.
Get started
-----------
Add the crate in the cargo manifest:
```toml
radix_fmt = "1"
```
Import [`radix`](fn.radix.html) in scope,
and you are ready to go:
```rust
use radix_fmt::radix;
```
Examples
--------
```rust
use radix_fmt::*;
let n = 35;
// Ouput: "z"
println!("{}", radix(n, 36));
// Same ouput: "z"
println!("{}", radix_36(n));
```
You can use the *alternate* modifier to capitalize the letter-digits:
```rust
use radix_fmt::radix;
let n = 35;
// Ouput: "Z"
println!("{:#}", radix(n, 36));
```
FAQ
---
* Which digits are used when the base is superior to `10`?
> This crate uses the letters in alphabetic order. That is
why the maximum base is 36: it uses all the digits and all
the letters of the alphabet.
* Among the functions that format in a specific base, why are some missing?
For example there are `radix_7` and `radix_9`, but not `radix_8`.
> All the numbers in range `[2, 36]` are represented except
`2`, `8`, `10` and `16` because they already exist in the
standard library through binary, octal, decimal (regular) and
hexadecimal formatting.
* What if I want to use the capitalized letters as digits?
> Use the *alternate* modifier `{:#}`.
* Why does the formatting of negative numbers give a weird result?
> Just as in the standard library, when a number is formatted in a
non-decimal base, the two’s complement representation is used. That means
that the number is casted to the unsigned version (for example, for an `i8`
the following number is used: `n as u8`).