README.md

Base16 encoding and decoding
============================

[![Actions Status](https://github.com/esl/base16/workflows/ci/badge.svg)](https://github.com/esl/base16/actions)
[![codecov](https://codecov.io/gh/esl/base16/branch/main/graph/badge.svg)](https://codecov.io/gh/esl/base16)
[![Hex](http://img.shields.io/hexpm/v/base16.svg)](https://hex.pm/packages/base16)

## API

Both `encode/1` and `decode/1` functions are of `(binary()) -> binary()` type.

The usage looks like:

```erlang
B = crypto:rand_bytes(10).
H = base16:encode(B).
B = base16:decode(H).
```

Please, note:

   * `base16:encode/1` returns lower-case letters.
   * `base16:decode/1` requires the argument to be a binary of odd-number size, and it parses both in upper-case or lower-case encoding.


## Implementation

Code is implemented using lookup tables, which tremendously speeds-up the algorithm and consumes constant memory. It's the fastest you can get using pure Erlang code!

## NOTE

Note that, lookup tables also means that the code-size is bigger.
If you're running on embedded, where smaller code-sizes are the actual best, you might benefit from using the version 1.0.0, both available on github and hex.


License
-------

The library itself is licensed under the MIT License.

The tests, due to dependency on [PropEr], are licensed under the GPLv3 license.

[PropEr]:http://proper.softlab.ntua.gr/index.html