ExAbci v0.5.2 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
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
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, “”}
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>>
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>>