ExAbci v0.7.6 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(arg1)
View Source
decode_varint(binary()) :: :none | {non_neg_integer(), binary()}
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
decode_zigzag(bin) View Source
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, ""}
encode_varint(v)
View Source
encode_varint(non_neg_integer()) :: binary()
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>>
encode_zigzag(v) View Source
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>>