Pure-Python port of compact-encoding, wire-compatible with the JavaScript implementation. All multi-byte values are little-endian.
import compact_encoding as cenc
data = cenc.encode(cenc.uint, 42) # -> bytes
n = cenc.decode(cenc.uint, data) # -> 42uint, uint32, int, utf8 (alias string), bool, buffer.
import compact_encoding as cenc
state = cenc.State()
cenc.uint.preencode(state, 42)
cenc.utf8.preencode(state, "hi")
state.allocate()
cenc.uint.encode(state, 42)
cenc.utf8.encode(state, "hi")