A library to compress integers using LEB128.
Installation
Add :varint to your list of dependencies in mix.exs:
def deps do
[{:varint, "~> 1.6"}]
endUsage
LEB128
Use this module to compress and decompress unsigned integers:
iex> Varint.LEB128.encode(300)
<<172, 2>>iex> Varint.LEB128.decode(<<172, 2>>)
{300, <<>>}SLEB128
Use this module to compress and decompress signed integers using signed LEB128:
iex> Varint.SLEB128.encode(-624485)
<<155, 241, 89>>iex> Varint.SLEB128.decode(<<155, 241, 89>>)
{-624485, <<>>}Zigzag
As LEB128 works with unsigned integers, you can use the Zigzag module to process signed integers.
iex> Varint.Zigzag.encode(-2)
3iex> Varint.Zigzag.decode(3)
-2iex> Varint.Zigzag.encode(2)
4iex> Varint.Zigzag.decode(4)
2You'll find detailed instructions at hexdocs.pm.
License
Copyright (c) 2016 Alexandre Hamez
This work is free. You can redistribute it and/or modify it under the terms of the MIT License. See the LICENSE file for more details.