A library to compress integers using LEB128.
Add :varint
to your list of dependencies in mix.exs
:
def deps do
[{:varint, "~> 1.4"}]
end
Use this module to compress and decompress unsigned integers:
iex> Varint.LEB128.encode(300)
<<172, 2>>
iex> Varint.LEB128.decode(<<172, 2>>)
{300, <<>>}
As LEB128 works with unsigned integers, you can use the the Zigzag module to process signed integers.
iex> Varint.Zigzag.encode(-2)
3
iex> Varint.Zigzag.decode(3)
-2
iex> Varint.Zigzag.encode(2)
4
iex> Varint.Zigzag.decode(4)
2
You'll find detailed instructions at hexdocs.pm.
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.