README.md

# Base32Crockford
[![Build Status](https://travis-ci.org/voldy/base32_crockford.svg?branch=master)](https://travis-ci.org/voldy/base32_crockford)

An alternate base32 encoding as described by Douglas Crockford at: 
[https://www.crockford.com/wrmg/base32.html](https://www.crockford.com/wrmg/base32.html)

It is used for expressing integer numbers in a form that can be conveniently 
and accurately transmitted between humans and computer systems.

The encoding is designed to:

- Be human and machine readable
- Be compact
- Be error resistant
- Be pronounceable

A symbol set of 10 digits and 22 letters is used:
`0123456789ABCDEFGHJKMNPQRSTVWXYL`
It does not include 4 of the 26 letters: I L O U.

A check symbol can be appended to a symbol string. 5 additional symbols
`*~$=U` are used only for encoding or decoding the check symbol.

When decoding, upper and lower case letters are accepted,
and `i` and `l` will be treated as `1` and `o` will be treated as `0`.
When encoding, only upper case letters are used.

## Installation

The package can be installed as:

  1. Add base32_crockford to your list of dependencies in `mix.exs`:

    ```elixir
    def deps do
      [{:base32_crockford, "~> 1.0.0"}]
    end
    ```

  2. Run `mix deps.get` in your console to fetch from Hex


## Usage

```elixir
iex> Base32Crockford.encode(1_000_000_000)
"XSNJG0"

iex> Base32Crockford.encode(1_000_000_000, partitions: 2)
"XSN-JG0"

iex> Base32Crockford.decode("XSNJG0")
{:ok, 1000000000}

iex> Base32Crockford.decode!("XSNJG0")
1000000000
```
    
## Documentation
Hosted on [http://hexdocs.pm/base32_crockford/readme.html](http://hexdocs.pm/base32_crockford/readme.html)

## Author
Vladimir Zhukov

Base32Crockford is released under the [MIT License](https://github.com/voldy/base32_crockford/blob/master/LICENSE).