leb128

Little Endian Base 128 (LEB128) variable length encoding

https://en.wikipedia.org/wiki/LEB128#Unsigned_LEB128

ppci.utils.leb128.signed_leb128_decode(data) → int

Read variable length encoded 128 bits signed integer.

>>> from ppci.utils.leb128 import signed_leb128_decode
>>> signed_leb128_decode(iter(bytes([0x9b, 0xf1, 0x59])))
-624485
ppci.utils.leb128.signed_leb128_encode(value: int) → bytes

Encode the given number as signed leb128

>>> from ppci.utils.leb128 import signed_leb128_encode
>>> signed_leb128_encode(-1337)
b'Çu'
ppci.utils.leb128.unsigned_leb128_decode(data) → int

Read variable length encoded 128 bits unsigned integer

>>> from ppci.utils.leb128 import unsigned_leb128_decode
>>> signed_leb128_decode(iter(bytes([0xe5, 0x8e, 0x26])))
624485
ppci.utils.leb128.unsigned_leb128_encode(value: int) → bytes

Encode number as into unsigned leb128 encoding

>>> from ppci.utils.leb128 import unsigned_leb128_encode
>>> unsigned_leb128_encode(42)
b'*'