ExAbci v0.7.0 ExAbci.Varint View Source

Encode and decode varint and zigzag. Maybe there’s existing lib for it.

Link to this section Summary

Functions

Decodes varint

Decodes zigzag back to integer

Encodes unsigned integer

Encodes integer with zigzag

Link to this section Functions

Link to this function decode_varint(arg1) View Source
decode_varint(binary()) :: :none | {non_neg_integer(), binary()}

Decodes varint

iex> ExAbci.Varint.decode_varint(<<127>>) {127, “”}

iex> ExAbci.Varint.decode_varint(<<128, 1>>) {128, “”}

iex> ExAbci.Varint.decode_varint(<<232, 7>>) {1000, “”}

iex> ExAbci.Varint.decode_varint(<<128>>) :none

Link to this function decode_zigzag(bin) View Source
decode_zigzag(binary()) :: :none | {integer(), binary()}

Decodes zigzag back to integer

iex> ExAbci.Varint.decode_zigzag(<<2>>) {1, “”}

iex> ExAbci.Varint.decode_zigzag(<<1>>) {-1, “”}

iex> ExAbci.Varint.decode_zigzag(<<128, 2>>) {128, “”}

iex> ExAbci.Varint.decode_zigzag(<<255, 1>>) {-128, “”}

Link to this function encode_varint(v) View Source
encode_varint(non_neg_integer()) :: binary()

Encodes unsigned integer

iex> ExAbci.Varint.encode_varint(127) “”

iex> “” === <<127>> true

iex> ExAbci.Varint.encode_varint(128) <<128, 1>>

iex> ExAbci.Varint.encode_varint(1000) <<232, 7>>

Link to this function encode_zigzag(v) View Source
encode_zigzag(integer()) :: binary()

Encodes integer with zigzag

iex> ExAbci.Varint.encode_zigzag(1) <<2>>

iex> ExAbci.Varint.encode_zigzag(-1) <<1>>

iex> ExAbci.Varint.encode_zigzag(128) <<128, 2>>

iex> ExAbci.Varint.encode_zigzag(-128) <<255, 1>>